我需要读取zip文件夹中的多个csv文件,并将这些csv中的数据提取到Python中的容器中。
我是具有基本知识的Python的新手。所以详细解释很明显。
提前致谢 Sampath
答案 0 :(得分:1)
要做的第一件事是使用模块zipfile
打开zip文件。然后从每个存档文件中读取CSV数据并将其存储在容器(如字典)中。
以下内容将zip存档中每个文件的数据读入一个由文件名键入的字典。
import zipfile
container = {}
with zipfile.ZipFile('/path/to/your/zipfile') as zf:
for name in zf.namelist():
container[name] = zf.read(name)
for name in container:
print("Contents of file {}:".format(name))
print(container[name])
print("============================\n")
您可以选择使用模块csv
处理csv数据。这样的事情应该让你开始:
import csv
import zipfile
from cStringIO import StringIO
container = {}
with zipfile.ZipFile('/path/to/your/zipfile') as zf:
for name in zf.namelist():
container[name] = csv.reader(StringIO(zf.read(name)))
现在container
是一个以文件名为键的字典,其中csv.reader
个对象为值。
答案 1 :(得分:0)
以下是如何阅读zip中的所有文字:
import zipfile
archive = 'c:\\test\\archive.zip'
def readZip(archive):
zfile = zipfile.ZipFile(archive)
for finfo in zfile.infolist():
ifile = zfile.open(finfo)
lines = ifile.readlines()
return lines
print(readZip(archive))
答案 2 :(得分:0)
感谢您的帮助。
除了上面提供的代码之外,我还提出了一个满足问题的代码
import os
import csv
from zipfile import ZipFile
#Extracts and loads the files in a zip file to a specified destination
ze = ZipFile(open("Src_AdventureWorks_Files.zip","r"))
ze.extractall("/home/sreddi/workspace/DQAS_Main/Src_AdventureWorks_Files/")
print "Extraction successful"
#Meta data of the zipfile
zf = ZipFile('Src_AdventureWorks_Files.zip', 'r')
zc = zf.namelist()
print zc
#Loop to run each csv file and print the data
if __name__ == "__main__":
i=0
while i < len(zc):
#path = '/home/sreddi/workspace/DQAS_Main/Src_AdventureWorks_Files/'+zc[i]
#print path
print zc[i]
for csv_path in zc:
print "###########"
print zc[i]
print "###########"
os.chdir('/home/sreddi/workspace/DQAS_Main/Src_AdventureWorks_Files')
f = open(zc[i])
csv_f = csv.reader(f)
for row in csv_f:
print row
f.close()
i += 1