如何使用Python读取zip文件夹中的多个CSV文件

时间:2014-11-13 09:54:11

标签: python

我需要读取zip文件夹中的多个csv文件,并将这些csv中的数据提取到Python中的容器中。

我是具有基本知识的Python的新手。所以详细解释很明显。

提前致谢 Sampath

3 个答案:

答案 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