尝试使用 R 从一个文件夹创建 zip 文件。
这里提到了 "Rcompression" 包: Creating zip file from folders
但我没有找到在 Windows 系统上下载这个包的地方。
有什么建议吗?或者其他函数可以创建 zip 文件吗?
尝试使用 R 从一个文件夹创建 zip 文件。
这里提到了 "Rcompression" 包: Creating zip file from folders
但我没有找到在 Windows 系统上下载这个包的地方。
有什么建议吗?或者其他函数可以创建 zip 文件吗?
您可以使用utils
包中的zip
函数轻松创建一个zip文件。假设您有一个目录testDir
,并且您希望将该目录内的一个或多个文件压缩为zip文件,
dir('testDir')
# [1] "cats.csv" "test.csv" "txt.txt"
zip(zipfile = 'testZip', files = 'testDir/test.csv')
# adding: testDir/test.csv (deflated 68%)
压缩文件将保存在当前工作目录中,除非在zipfile
参数中指定了不同的路径。我们可以使用此命令查看其与原始未压缩文件的大小关系:
file.info(c('testZip.zip', 'testDir/test.csv'))['size']
# size
# testZip.zip 805
# testDir/test.csv 1493
如果没有子文件夹,你可以用以下命令将整个目录的文件压缩成zip文件:
files2zip <- dir('testDir', full.names = TRUE)
zip(zipfile = 'testZip', files = files2zip)
# updating: testDir/test.csv (deflated 68%)
# updating: testDir/cats.csv (deflated 27%)
# updating: testDir/txt.txt (stored 0%)
解压并查看文件,请使用unzip
命令。
unzip('testZip.zip', list = TRUE)
# Name Length Date
# 1 testDir/test.csv 1493 2014-05-14 20:54:00
# 2 testDir/cats.csv 116 2014-05-14 20:54:00
# 3 testDir/txt.txt 32 2014-05-08 09:37:00
注意: 关于 zip
参数,来自 ?zip
。
在 Windows 上,默认情况下依赖于 zip 程序(例如 Rtools 中的 zip 程序)在路径中。
zip('testZip', ...)
,则新的 zip 文件将保存在当前工作目录中。您可以通过 list.files()
查看它。 - Rich Scrivenfiles <- list.files("C:/Users/zjian/Desktop/tst/testDir",full.names = TRUE)
files
[1] "C:/Users/zjian/Desktop/tst/testDir/file1.pdf"
[2] "C:/Users/zjian/Desktop/tst/testDir/file2.r"getwd()
[1] "C:/Users/zjian/Desktop/tst"
zip(zipfile="newfile",files=files)
list.files("C:/Users/zjian/Desktop/tst",full.names = TRUE)
[1] "C:/Users/zjian/Desktop/tst/R.rdata" "C:/Users/zjian/Desktop/tst/testDir"' - Jian ZhangRtools
软件包。 - Rich Scrivenmy_wd<-getwd() # save your current working directory path
dest_path<-"C:/.../folder_with_files_to_be_zipped"
setwd(dest_path)
files<-list.files(dest_path)
named<-paste0(files,".zip")
mapply(zip,zipfile=named,files=files)
setwd(my_wd) # reset working directory path
与 R 的内置 unzip
函数不同,zip
需要一个像 7-zip (Windows) 或者 Rtools 中的 zip 程序在系统路径中存在。
folder_with_files_to_be_zipped
文件夹中的每个文件创建一个zip文件? - berszip()
将会悄无声息地失败。
zip
以不可见的方式返回错误代码(或退出代码)。也就是说,除非你明确要求它打印,否则它不会打印任何信息。print(zip(output, input))
来打印退出代码。如果没有找到zip程序,它将打印127
。#exit code 0 for success, all other codes are for failure
if (exit_code <- zip(output, input) != 0) {
stop("Zipping ", input, " failed with exit code:", exit_code)
}
omegahat
存储库安装:install.packages('Rcompression', repos = "http://www.omegahat.org/R", type = "source")
对于Windows系统,您需要安装zlib和bzip2并进行适当的链接才能使用。
utils::zip
在某些情况下可用。但是它存在一些问题。一个问题是在Windows系统中,您可以在命令提示符中使用的字符串的最大长度为8191个字符(某些版本为2047个字符)。如果您要压缩具有很多字符名称的目录/文件,则会出现问题。例如,如果您压缩Firefox配置文件目录,则会出现问题。此外,我发现必须相对于要压缩的目录发出zip命令以使用相对目录名称。Rcompression
具有altNames
参数来处理这个问题。
尽管如此,我始终无法在Windows上成功运行Rcompression
。
做那个
#Convertir todas las carpetas en .zip
d <- "C:/Users/Eric/Documents/R/win-library/3.3"
array <- list.files(d)
for (i in 1:length(array)){
name <- paste0(array[i],".zip")
zip(name, files = paste0(d,paste0("/",array[i])))
}
?tar
会更容易。我不明白为什么需要一个包来完成这个任务。 - rawr