【问题标题】:Read CSV starting with string from Zipfile从 Zipfile 中读取以字符串开头的 CSV
【发布时间】:2017-06-21 16:29:31
【问题描述】:

我正在尝试遍历其中包含 zip 文件的文件夹,并且只提取以特定前缀开头的 csv 文件。

代码如下:

for name in glob.glob(path + '/*.zip'):
    zf = zipfile.ZipFile(name)
    csv_file = pd.read_csv(zf.open('Common_MarketResults*.csv'))
    df = pd.concat(csv_file, axis=0).reset_index()

csv 文件在我使用的字符串后面有一些日期,每个 zip 文件中的日期都不同。我收到以下错误消息:

KeyError:“存档中没有名为 'Common_MarketResults*.csv' 的项目”

【问题讨论】:

  • zf.open('Common_MarketResults*.csv') 中的通配符 * 用作普通符号“*”。

标签: python csv zipfile


【解决方案1】:

在文件名中搜索子字符串使这成为可能。

sub = 'Common_MarketResults'
suf = 'csv'
data = []

for name in glob.glob(path + '*.zip'):
    zf = zipfile.ZipFile(name)
    zf_nfo = zipfile.ZipFile(name).namelist()
    for s in zf_nfo:
        if sub in s and suf in s:
            csv_file_str = s
    csv_file = pd.read_csv(zf.open(csv_file_str))
    csv_file['file_name'] = csv_file_str
    data.append(csv_file)

【讨论】:

    猜你喜欢
    • 2014-05-14
    • 1970-01-01
    • 2019-03-20
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多