在一个数据帧中加载一个文件夹的多个zip文件,其中包含密码

2024-09-30 07:34:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件夹,其中保存了几个zip文件,例如:

Folder path: C:\Users\FolderA
Files in the folder: A.Zip, B.Zip,....,Z.Zip

这些zip文件都使用相同的密码保护:LordOfRings

如何将该zip文件中的所有文件加载到一个数据帧中(请注意,每个zip文件只包含一个csv文件)

到目前为止,我只知道如何加载multiple csv files。我知道如何加载zip文件:

zf = zipfile.ZipFile('C:/...')
dfClearstream = pd.read_csv(zf.open('....csv'), sep=';')

因此,期望的结果将是熊猫中的一个数据帧


Tags: 文件csvthe数据pathin文件夹files
2条回答

您可以使用数据帧和concat数据帧创建一个列表:

dfs = []

with zipfile.ZipFile('my_zip.zip') as zf:
    for file in zf.namelist():
        dfs.append(pd.read_csv(zf.open(file), sep=';'))

df = pd.concat(dfs)

根据您的答案multiple csv loading exampleopen password protected zip file example,您可以生成如下代码:

如果A.zip中有A.csv,B.zip中有B.csv

import glob
import pandas as pd
import zipfile

password = b'lordoftherings' # Set password

zipfiles = glob.glob("C:\Users\FolderA\*.zip") # Get list of zip files
zfs = [(zipfile.ZipFile(f), f.split("\\")[-1].split(".")[0] + '.csv') for f in zipfiles]
# Get ZipFile object and csv file name for each zip file

dfs = [pd.read_csv(zf.open(filename, 'r', password), header=None, sep=';') for zf, filename in zfs]
# Unzip zip file with password, read csv files

salesdata = pd.concat(dfs,ignore_index=True)

相关问题 更多 >

    热门问题