如何找到所需的文件并在 zip 文件中读取它?

How to find a required file and read it in a zip file?

我有 zip 文件,每个 zip 文件包含三个子文件夹(即 ini、log 和 output)。我想从输出文件夹中读取一个文件,它包含三个具有不同名称的 csv 文件。假设三个文件名为:initial.csvintermediate.csvfinal.csv。只想阅读 final.csv 文件。

我尝试读取文件的代码是:

import zipfile
import numpy
import pandas as pd

zipfiles = glob.glob('/home/data/*.zip')
for i in np.arange(len(zipfiles)):
    zip = zipfile.ZipFile(zpfiles[i])
    f = zip.open(zip.namelist().startswith('final'))
    data = pd.read_csv(f, usecols=[3,7])

我得到的错误是'list' object has no attribute 'startswith'

如何找到正确的文件并阅读它?

替换

f = zip.open(zip.namelist().startswith('final'))

f = zip.open('output/final.csv')

如果你能“找到”它:

filename = ([name for name in zip.namelist() if name.startswith('output/final')][0])
f = zip.open(filename)

要找到子目录,让我们切换到使用 glob:

的路径库
from pathlib import Path
import zipfile
import pandas as pd


dfs = []

files = Path('/home/data/').rglob('*final*.zip') #rglob recursively trawls all child dirs.
for file in files:
    zip = zipfile.ZipFile(zpfiles[file])
    ....
    # your stuff
    df = pd.read_csv(f, usecols=[3,7])
    dfs.append(df)