如何处理压缩文件夹中的 CSV 文件?
Posted
技术标签:
【中文标题】如何处理压缩文件夹中的 CSV 文件?【英文标题】:How to work with CSV files inside a zipped folder? 【发布时间】:2017-11-27 19:03:14 【问题描述】:我第一次在 python 中处理压缩文件,我很难过。
我阅读了 zipfile 的文档,但我不确定什么是做我想做的事情的最佳方法。我有一个压缩文件夹,里面有 CSV 文件,我希望能够打开 zip 文件,并从里面的 csv 文件中检索某些值。
我是否使用 zipfile.extract(file name here) 将其带到当前工作目录?如果我这样做,我只是使用文件名来处理文件,还是以不同的方式索引或列出它们?
目前,我手动将压缩文件夹中的所有文件提取到我的项目的当前工作目录,然后使用 csv 模块读取它们。我真正想做的就是删除这一步。
我们将不胜感激任何和所有的帮助!
【问题讨论】:
***.com/questions/3451111/unzipping-files-in-python。正如这个问题的答案所示,extract
方法的参数不是文件名,而是要提取到的目录。
你应该尝试一下,看看会发生什么。
【参考方案1】:
您希望避免提取到磁盘,在zip docs for python 中有ZipFile.open()
,它为您提供了一个类似文件的对象。这是一个对象,其行为主要类似于磁盘上的常规文件,但它位于内存中。它在读取时会给出一个字节数组,至少在 py3 中是这样。
这样的……
from zipfile import ZipFile
import csv
with ZipFile('abc.zip') as myzip:
print(myzip.filelist)
for mf in myzip.filelist:
with myzip.open(mf.filename) as myfile:
mc = myfile.read()
c = csv.StringIO(mc.decode())
for row in c:
print(row)
一旦你学会了如何查找东西以及文档中使用的一些基本编程术语/描述,Python 的文档实际上是相当不错的。
由于某种原因,csv.BytesIO
未实现,因此通过csv.StringIO
进行了额外的步骤。
【讨论】:
以上是关于如何处理压缩文件夹中的 CSV 文件?的主要内容,如果未能解决你的问题,请参考以下文章