从 .zip 中提取某些文件
Extract certain files from .zip
有没有办法从 .zip
存档中选择性地提取名称与模式匹配的文件?
例如,如果我想使用存档中的所有 .csv
个文件并忽略其他文件。
当前方法:
zipped_file_names <- unzip('some_archive.zip') # extracts everything, captures file names
csv_nms <- grep('csv', zipped_file_names, ignore.case=TRUE, value=TRUE)
library('data.table')
comb_tbl <- rbindlist(lapply(csv_nms, function(x) cbind(fread(x, sep=',', header=TRUE,
stringsAsFactors=FALSE),
file_nm=x) ), fill=TRUE )
我不是只选择要阅读的内容 (csv_nms
),而是在寻找一种方法来首先选择要提取的内容。
我目前使用的是 v3.2.2 (Windows)。
感谢@user20650 的评论。
两次调用 unzip
。首先使用 list=TRUE
只是为了获取文件的 $Name
。其次使用 files=
仅提取名称与模式匹配的文件。
zipped_csv_names <- grep('\.csv$', unzip('some_archive.zip', list=TRUE)$Name,
ignore.case=TRUE, value=TRUE)
unzip('some_archive.zip', files=zipped_csv_names)
comb_tbl <- rbindlist(lapply(zipped_csv_names,
function(x) cbind(fread(x, sep=',', header=TRUE,
stringsAsFactors=FALSE),
file_nm=x)), fill=TRUE )
有没有办法从 .zip
存档中选择性地提取名称与模式匹配的文件?
例如,如果我想使用存档中的所有 .csv
个文件并忽略其他文件。
当前方法:
zipped_file_names <- unzip('some_archive.zip') # extracts everything, captures file names
csv_nms <- grep('csv', zipped_file_names, ignore.case=TRUE, value=TRUE)
library('data.table')
comb_tbl <- rbindlist(lapply(csv_nms, function(x) cbind(fread(x, sep=',', header=TRUE,
stringsAsFactors=FALSE),
file_nm=x) ), fill=TRUE )
我不是只选择要阅读的内容 (csv_nms
),而是在寻找一种方法来首先选择要提取的内容。
我目前使用的是 v3.2.2 (Windows)。
感谢@user20650 的评论。
两次调用 unzip
。首先使用 list=TRUE
只是为了获取文件的 $Name
。其次使用 files=
仅提取名称与模式匹配的文件。
zipped_csv_names <- grep('\.csv$', unzip('some_archive.zip', list=TRUE)$Name,
ignore.case=TRUE, value=TRUE)
unzip('some_archive.zip', files=zipped_csv_names)
comb_tbl <- rbindlist(lapply(zipped_csv_names,
function(x) cbind(fread(x, sep=',', header=TRUE,
stringsAsFactors=FALSE),
file_nm=x)), fill=TRUE )