2017-08-26 115 views
1

我读了this后如何删除tmp文件。该职位的解决方案是:删除tmp文件

do.call(file.remove, list(list.files("C:/Temp", full.names = TRUE))) 

目录“C:/温度”大概是与Windows机器罚款。由于我在Linux上我不知道我的tmp文件目录是,所以我这样做:

tmp <- tempfile() 

将返回:“/ tmp目录/ RtmpNS80no/file147c37e54e8e”

所以,我尝试这样做:

do.call(file.remove, list(list.files("tmp", full.names = TRUE))) 

这将返回 “逻辑(0)”,因此大概没有工作?

如何删除我所有的tmp文件?

+0

'list.files(“tmp”,full.names = TRUE)'给出了什么? –

+0

“list.files”中的目录位置与您当前的工作目录相关,因此您需要全部拼写或确保您位于“tmp”上方的目录中。也许你还需要在'list.files'调用中'recursive = TRUE'。 –

+2

'tempfile()'为您提供临时文件目录中临时文件的文件路径。您的R会话的临时目录位置可以通过'tempdir()'找到。临时目录可以用'basename(tempdir())' – cderv

回答

2


您可以获得当前R对话temp目录。打过几次电话

tmp_dir <- tempdir() 
tmp_dir 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh" 
tempdir() 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh" 

临时目录包含当前 R对话

list.files(tmp_dir) 
#> [1] "file16dc20539ab" "file16dc4ad71f" "file16dc5bab1716" 
#> [4] "file16dc74d65663" 

会话临时目录是在系统的临时目录中的临时文件和目录时,它不会改变。如果你想删除系统中所有的temp目录(不推荐,但因为它是所有系统,而不仅仅是[R临时文件),您可以使用此路径

dirname(tmp_dir) 
#> [1] "C:/Users/chris/AppData/Local/Temp" 

此路径也包含在操作系统的环境变量。 (很明显,我在Windows上)

Sys.getenv("TEMP") 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp" 
shell("echo %TMP%", intern = T) # command line from R on windows 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp" 

tempfile()给出了一个可能的临时文件的路径,在 tempdir()目录默认情况下,没有文件扩展名。是 未创建文件和tempfile调用几个 次

tmp_file <- tempfile() 
tmp_file 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh\\file16dc202636f" 
file.exists(tmp_file) 
#> [1] FALSE 

tempfile() # new file path when called again 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh\\file16dc72594e58" 

我们可以写的东西tmp_file时给出不同的值。

# file is created by writeLines if it does not exist (this is the case here) 
writeLines("This is a temp file", con = tmp_file) 
file.exists(tmp_file) 
#> [1] TRUE 

我们可以从文件中读取现在

readLines(tmp_file) 
#> [1] "This is a temp file" 

,如果你想如果你想删除在R会话临时文件夹中的所有文件删除这个文件

file.remove(tmp_file) 
#> [1] TRUE 
file.exists(tmp_file) 
#> [1] FALSE 

,你可以在文件列表上使用 file.remove。为此示例目的,我删除了以“file”开头的所有 临时文件("^file"是该模式的正则表达式)。有不止我创建 - R会话似乎创建一些临时文件。

files <- list.files(tmp_dir, full.names = T, pattern = "^file") 
files 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc1a6a6e15" 
#> [2] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc1ff572fc" 
#> [3] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc20539ab" 
#> [4] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc2e2227b8" 
#> [5] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc4ad71f" 
#> [6] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc513c35b6" 
#> [7] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc570a473f" 
#> [8] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc5bab1716" 
#> [9] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc6e102bd4" 
#> [10] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc6f253f90" 
#> [11] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/file16dc74d65663" 
file.remove(files) 
#> Warning in file.remove(files): impossible d'effacer le fichier 'C: 
#> \Users\chris\AppData\Local\Temp\RtmpmusYkh/file16dc1ff572fc', à cause de 
#> 'Permission denied' 
#> [1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 

我得到一个警告,因为如果你想删除一个文件夹,您可以使用unlink

# create a new directory under tempdir 
dir.create(dir1 <- file.path(tempdir(), "testdir")) 
# create 2 file under this new directory 
file.create(file1 <- tempfile(tmpdir = dir1)) 
#> [1] TRUE 
file.create(file2 <- tempfile(tmpdir = dir1)) 
#> [1] TRUE 
file1 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/testdir\\file16dc26b5cb7" 
file2 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/testdir\\file16dc2b0816fe" 
list.files(dir1, full.names = T) 
#> [1] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/testdir/file16dc26b5cb7" 
#> [2] "C:\\Users\\chris\\AppData\\Local\\Temp\\RtmpmusYkh/testdir/file16dc2b0816fe" 

# we can delete the all directory with `unlink`. It deletes also the directory 
unlink(dir1, recursive = T) 
dir.exists(dir1) 
#> [1] FALSE 
我不能(用R可能都在使用现在)删除

文件