在不知道其中的 csv 文件名的情况下读取 R 中的 zip 文件
Reading a zip file in R without knowing the csv file name within it
我正在尝试读取一个包含 1 个 csv 文件的 zip 文件。
当我知道 csv 文件名时效果很好,但当我试图单独提取 zip 文件时,它不起作用。
这里是它起作用的地方的例子:
zip_file <- abc.zip
csv_file <- abcde.csv
data <- read.table(unz(zip_file,csv_file), skip = 10, header=T, quote="\"", sep=",")
这里是当我尝试只提取 zip 文件时它不起作用的地方:
read.table(zip_file, skip = 10, nrows=10, header=T, quote="\"", sep=",")
出现错误提示:
Error in read.table(attachment_file, skip = 10, nrows = 10, header = T, :
no lines available in input
In addition: Warning messages:
1: In readLines(file, skip) : line 2 appears to contain an embedded nul
2: In readLines(file, skip) : line 3 appears to contain an embedded nul
3: In readLines(file, skip) :
incomplete final line found on
'C:\Users\nickk\AppData\Local\Temp\RtmpIrqdl8\file2c9860d62381'
所以这表明肯定存在一个 csv 文件,因为当我包含 csv 文件名时它可以工作,但是当我只执行 zip 文件时,就会出现错误。
对于上下文,我不想包括 csv 文件名的原因是因为我需要每天阅读这个 zip 文件,而 csv 文件的名称每次都没有模式地变化。所以我的目标是只读取 zip 文件来绕过它。
谢谢!
为什么不尝试使用 unzip
在 ZIP 存档中查找文件名:
zipdf <- unzip(zip_file, list = TRUE)
# the following line assuming the archive has only a single file
csv_file <- zipdf$Name[0]
your_df <- read.table(csv_file, skip = 10, nrows=10, header=T, quote="\"", sep=",")
如果你对data.table
持开放态度,可以试试:
data.table::fread(paste('unzip -cq', zip_file), skip = 10)
-c
: 解压缩到突出;
-q
:抑制由 unzip
打印的消息;
我正在尝试读取一个包含 1 个 csv 文件的 zip 文件。
当我知道 csv 文件名时效果很好,但当我试图单独提取 zip 文件时,它不起作用。
这里是它起作用的地方的例子:
zip_file <- abc.zip
csv_file <- abcde.csv
data <- read.table(unz(zip_file,csv_file), skip = 10, header=T, quote="\"", sep=",")
这里是当我尝试只提取 zip 文件时它不起作用的地方:
read.table(zip_file, skip = 10, nrows=10, header=T, quote="\"", sep=",")
出现错误提示:
Error in read.table(attachment_file, skip = 10, nrows = 10, header = T, :
no lines available in input
In addition: Warning messages:
1: In readLines(file, skip) : line 2 appears to contain an embedded nul
2: In readLines(file, skip) : line 3 appears to contain an embedded nul
3: In readLines(file, skip) :
incomplete final line found on
'C:\Users\nickk\AppData\Local\Temp\RtmpIrqdl8\file2c9860d62381'
所以这表明肯定存在一个 csv 文件,因为当我包含 csv 文件名时它可以工作,但是当我只执行 zip 文件时,就会出现错误。
对于上下文,我不想包括 csv 文件名的原因是因为我需要每天阅读这个 zip 文件,而 csv 文件的名称每次都没有模式地变化。所以我的目标是只读取 zip 文件来绕过它。
谢谢!
为什么不尝试使用 unzip
在 ZIP 存档中查找文件名:
zipdf <- unzip(zip_file, list = TRUE)
# the following line assuming the archive has only a single file
csv_file <- zipdf$Name[0]
your_df <- read.table(csv_file, skip = 10, nrows=10, header=T, quote="\"", sep=",")
如果你对data.table
持开放态度,可以试试:
data.table::fread(paste('unzip -cq', zip_file), skip = 10)
-c
: 解压缩到突出;-q
:抑制由unzip
打印的消息;