在 R 中读取 zip 文件而不知道其中的 csv 文件名

nak*_*120 5 csv zip r unzip read.table

我正在尝试读取其中包含 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=",")
Run Code Online (Sandbox Code Playgroud)

当我尝试仅提取 zip 文件时,它不起作用:

read.table(zip_file, skip = 10, nrows=10, header=T, quote="\"", sep=",")
Run Code Online (Sandbox Code Playgroud)

出现错误:

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'
Run Code Online (Sandbox Code Playgroud)

所以这表明肯定存在一个 csv 文件,因为当我包含 csv 文件名时它可以工作,但当我只执行 zip 文件时,就会出现错误。

就上下文而言,我不想包含 csv 文件名的原因是因为我需要每天读取此 zip 文件,并且 csv 文件的名称每次都会以没有模式的方式更改。所以我的目标是只读取 zip 文件来绕过这个问题。

谢谢!

Tim*_*sen 4

为什么不尝试使用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=",")
Run Code Online (Sandbox Code Playgroud)