2017-08-26 68 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可能都在使用現在)刪除

文件