删除 tmp 文件
Deleting tmp files
我阅读了 this post 如何删除 tmp 文件。 post 的解决方案是:
do.call(file.remove, list(list.files("C:/Temp", full.names = TRUE)))
目录 "C:/Temp" 大概适用于 windows 台机器。因为我在 linux 我不确定我的 tmp 文件目录是什么所以我这样做了:
tmp <- tempfile()
哪个returns:“/tmp/RtmpNS80no/file147c37e54e8e”
所以,我尝试了这个:
do.call(file.remove, list(list.files("tmp", full.names = TRUE)))
这个returns"logical(0)"这么想来应该没用吧?
如何删除我所有的 tmp 文件?
您可以获得当前 R 会话的临时目录。多次调用不变
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"
会话临时目录在系统的临时目录中。如果你想删除系统临时目录中的所有文件,你可以使用此路径(但不推荐,因为它适用于所有系统,而不仅仅是 R 临时文件)
dirname(tmp_dir)
#> [1] "C:/Users/chris/AppData/Local/Temp"
此路径也包含在 OS 的环境变量中。 (很明显,我在 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"
现在如果你想删除这个文件
file.remove(tmp_file)
#> [1] TRUE
file.exists(tmp_file)
#> [1] FALSE
如果要删除R会话临时文件夹中的所有文件,可以使用
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 使用)
如果你想删除一个文件夹,你也可以使用 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
这是一个非常简单的方法
unlink(paste0(normalizePath(tempdir()), "/", dir(tempdir())), recursive = TRUE)
确认有效
dir(tempdir())
# character(0)
花了几个小时找出 如何使用 cmd 删除旧文件和文件夹 我最终写了这个 R 脚本,我肯定会自动 运行周:
#Windows Environmental variable %USERPROFILE%\AppData\Local\Temp
PCTempDir <- Sys.getenv("TEMP")
#detect and delete folders with pattern "Rtmp"
folders <- dir(PCTempDir, pattern = "Rtmp", full.names = TRUE)
unlink(folders, recursive = TRUE, force = TRUE, expand = TRUE)
这将删除 Rtmp*
个文件夹,其中包含已执行 R 脚本留下的文件,因为我的计算机上有很多文件
当然也可以扩展这样的脚本以容纳其他文件夹
我阅读了 this post 如何删除 tmp 文件。 post 的解决方案是:
do.call(file.remove, list(list.files("C:/Temp", full.names = TRUE)))
目录 "C:/Temp" 大概适用于 windows 台机器。因为我在 linux 我不确定我的 tmp 文件目录是什么所以我这样做了:
tmp <- tempfile()
哪个returns:“/tmp/RtmpNS80no/file147c37e54e8e”
所以,我尝试了这个:
do.call(file.remove, list(list.files("tmp", full.names = TRUE)))
这个returns"logical(0)"这么想来应该没用吧?
如何删除我所有的 tmp 文件?
您可以获得当前 R 会话的临时目录。多次调用不变
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"
会话临时目录在系统的临时目录中。如果你想删除系统临时目录中的所有文件,你可以使用此路径(但不推荐,因为它适用于所有系统,而不仅仅是 R 临时文件)
dirname(tmp_dir)
#> [1] "C:/Users/chris/AppData/Local/Temp"
此路径也包含在 OS 的环境变量中。 (很明显,我在 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"
现在如果你想删除这个文件
file.remove(tmp_file)
#> [1] TRUE
file.exists(tmp_file)
#> [1] FALSE
如果要删除R会话临时文件夹中的所有文件,可以使用
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 使用)
如果你想删除一个文件夹,你也可以使用 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
这是一个非常简单的方法
unlink(paste0(normalizePath(tempdir()), "/", dir(tempdir())), recursive = TRUE)
确认有效
dir(tempdir())
# character(0)
花了几个小时找出 如何使用 cmd 删除旧文件和文件夹 我最终写了这个 R 脚本,我肯定会自动 运行周:
#Windows Environmental variable %USERPROFILE%\AppData\Local\Temp
PCTempDir <- Sys.getenv("TEMP")
#detect and delete folders with pattern "Rtmp"
folders <- dir(PCTempDir, pattern = "Rtmp", full.names = TRUE)
unlink(folders, recursive = TRUE, force = TRUE, expand = TRUE)
这将删除 Rtmp*
个文件夹,其中包含已执行 R 脚本留下的文件,因为我的计算机上有很多文件
当然也可以扩展这样的脚本以容纳其他文件夹