2017-08-26 9 views
1

私はthisのtmpファイルを削除する方法についての記事を読んでいます。その投稿の解決策は次のとおりです。tmpファイルを削除する

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

"C:/ Temp"というディレクトリは、おそらくWindowsマシンでは問題ありません。

返し
tmp <- tempfile() 

: "を/ tmp/RtmpNS80no/file147c37e54e8e"

をので、私はこれを試してみました、私はLinux上でだので、私は私のtmpファイルdirが、私はこれをしなかったので、何であったかわかりませんでした。

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()'にあります。 tempディレクトリは 'basename(tempdir()) 'で計算できます。 – cderv

答えて

2


あなたは、現在のRセッションのために一時ディレクトリを取得することができます。セッションの一時ディレクトリは、システムの一時ディレクトリにある

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

現在 Rセッションのために一時ディレクトリが一時ファイルとディレクトリが含まれてい

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

数回呼ばれたときには変更されません。あなたは(だけではなく、Rの一時ファイル、それはすべてのシステムのためにあるので、けれどもお勧めできません)システムの一時ディレクトリ内のすべて削除したい場合は、

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

このパスはまたに含まれ、このパスを使用することができますOSの環境変数。

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に何かを書くことができます異なる値を与えていません。

あなたはRセッションの一時フォルダ内のすべてのファイルを削除したい場合は

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

にこのファイルを削除する場合我々は、今、このファイルからあなたを

readLines(tmp_file) 
#> [1] "This is a temp 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 

ファイル一覧で 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 

私は(今おそらくRが使用して)削除することはできませんファイルがありますので、私は警告を受ける

あなたはあまりにも

# 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 
unlinkを使用することができ、フォルダを削除する場合
関連する問題