2017-08-26 1 views
1

J'ai lu this pour savoir comment supprimer des fichiers tmp. La solution dans ce message est:Suppression de fichiers tmp

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

Le répertoire "C:/Temp" est probablement correct avec les machines Windows. Depuis que je suis sur linux je ne suis pas sûr de ce que mon dossier tmp dir était donc je l'ai fait:

tmp <- tempfile() 

qui retourne: "/ tmp/RtmpNS80no/file147c37e54e8e"

Alors, j'ai essayé ceci:

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

Cela renvoie "logique (0)" alors cela ne fonctionnait probablement pas?

Comment supprimer tous mes fichiers tmp?

+0

Que fait 'list.files (" tmp ", full.names = TRUE)'? –

+0

L'emplacement du répertoire dans 'list.files' est relatif à votre répertoire de travail actuel, vous devez donc l'épeler dans son intégralité ou vous assurer que vous êtes dans le répertoire au-dessus de' tmp'. Peut-être avez-vous aussi besoin de 'recursive = TRUE' dans votre appel' list.files'. –

+2

'tempfile()' vous donne un chemin de fichier pour un fichier temporaire dans votre répertoire de fichiers temporaires. L'emplacement du répertoire temporaire pour votre session R est trouvé avec 'tempdir()'. le répertoire temp peut être calculé avec 'basename (tempdir())' – cderv

Répondre

2


Vous pouvez obtenir le répertoire temporaire pour la session de R. Il ne change pas lorsque appelé à plusieurs reprises

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

Le répertoire temp contient les fichiers temporaires et le répertoire pour la session en cours de R

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

Le répertoire temporaire de session est dans le répertoire temporaire du système. Vous pouvez utiliser ce chemin si vous voulez supprimer tous dans le répertoire temporaire du système (non recommandé mais parce qu'il est pour tout le système, et pas seulement les fichiers temporaires R)

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

Ce chemin est contient également dans un environnement variable pour le système d'exploitation. (De toute évidence, je suis sous 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() donne le chemin d'un fichier temporaire possible, dans le répertoire par défaut tempdir(), sans extension de fichier. Le fichier est pas créé et tempfile donne des valeurs différentes appelle plusieurs fois

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" 

Nous pouvons écrire quelque chose à 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 

Nous pouvons lire ce fichier

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

Maintenant, si vous voulez supprimer ce fichier

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

Si vous voulez supprimer tous les fichiers dans le dossier temp de session R, vous peut utiliser file.remove sur une liste de fichiers. Pour cet exemple, j'ai supprimé tous les fichiers temporaires commençant par "fichier" ("^file" est une regex pour ce modèle). Il y a plus que ce que j'ai créé - La session R semble créer un fichier temporaire en cours de route.

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 

Je reçois un avertissement parce qu'il ya un fichier que je ne peux pas supprimer (probablement utilisé par R en ce moment)

Si vous souhaitez supprimer un dossier, vous pouvez utiliser unlink trop

# 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