如何解压缩文件,更改 csv table,然后再次压缩?
How to unzip file, change csv table, and zip again?
我有很多 .zip 文件。我需要:
- 打开 zip 文件
- 编辑其中的 .csv table
- 再次使用与开头同名的 Zip 文件
在 R 中可以吗?对于许多文件来说,这是一项相当困难的任务,因为它是一个大数据集,我需要按顺序处理。除了 .csv 文件外,每个 zip 文件夹中还有一些其他文件。
使用 unzip
和 zip
函数。在 lapply
循环中,我们首先创建一个 tempfile
用于 unzip
并且我们可以 read.csv
。我们将 .csv 标识为 grep
。然后编辑并反转该过程。只有 .csv 得到更新,其他文件保持不变。
toEdit <- c("df1.zip", "df2.zip", "df3.zip")
lapply(toEdit, function(z) {
temp <- tempfile()
temp <- unzip(z)
r <- read.csv(temp[grep("csv", temp)])
## edit data
r <- r/10
## end edit data
nn <- gsub("zip", "csv", z)
write.csv(r, nn)
zip(z, nn)
unlink(temp)
})
示例数据:
正在创建包含一个 .csv 文件和其中一些其他内容的 .zip 存档。
write("foo", "xy1.foo")
write("foo", "xy2.foo")
sapply(1:3, function(i) {
write.csv(data.frame(matrix(1:12, 3, 4)), paste0("df", i, ".csv"))
zip(paste0("df", i, ".zip"), paste0("df", i, ".csv"))
zip(paste0("df", i, ".zip"), "xy1.foo")
zip(paste0("df", i, ".zip"), "xy2.foo")
})
我有很多 .zip 文件。我需要:
- 打开 zip 文件
- 编辑其中的 .csv table
- 再次使用与开头同名的 Zip 文件
在 R 中可以吗?对于许多文件来说,这是一项相当困难的任务,因为它是一个大数据集,我需要按顺序处理。除了 .csv 文件外,每个 zip 文件夹中还有一些其他文件。
使用 unzip
和 zip
函数。在 lapply
循环中,我们首先创建一个 tempfile
用于 unzip
并且我们可以 read.csv
。我们将 .csv 标识为 grep
。然后编辑并反转该过程。只有 .csv 得到更新,其他文件保持不变。
toEdit <- c("df1.zip", "df2.zip", "df3.zip")
lapply(toEdit, function(z) {
temp <- tempfile()
temp <- unzip(z)
r <- read.csv(temp[grep("csv", temp)])
## edit data
r <- r/10
## end edit data
nn <- gsub("zip", "csv", z)
write.csv(r, nn)
zip(z, nn)
unlink(temp)
})
示例数据:
正在创建包含一个 .csv 文件和其中一些其他内容的 .zip 存档。
write("foo", "xy1.foo")
write("foo", "xy2.foo")
sapply(1:3, function(i) {
write.csv(data.frame(matrix(1:12, 3, 4)), paste0("df", i, ".csv"))
zip(paste0("df", i, ".zip"), paste0("df", i, ".csv"))
zip(paste0("df", i, ".zip"), "xy1.foo")
zip(paste0("df", i, ".zip"), "xy2.foo")
})