簡體   English   中英

讀取多個壓縮成一個文件的csv文件

[英]Read multiple csv files zipped in one file

我在文件夾中的幾個zip文件中有幾個csv文件,因此例如:

  • A.zip(包含csv1,csv2,csv3)
  • B.zip(包含csv4,csv5,csv6)

它們在文件夾路徑C:/Folder/ ,當我在文件夾中加載普通的csv文件時,我使用以下代碼:

import glob
import pandas as pd
files = glob.glob("C/folder/*.csv")
dfs = [pd.read_csv(f, header=None, sep=";") for f in files]

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

接下來的文章: 在python中讀取csv壓縮文件

zip中的一個csv的工作方式如下:

import pandas as pd
import zipfile

zf = zipfile.ZipFile('C:/Users/Desktop/THEZIPFILE.zip') 
df = pd.read_csv(zf.open('intfile.csv'))

知道如何為我優化此循環嗎?

使用zip.namelist()獲取zip文件的列表

例如:

import glob
import zipfile
import pandas as pd

for zip_file in glob.glob("C/folder/*.zip"):
    zf = zipfile.ZipFile(zip_file)
    dfs = [pd.read_csv(zf.open(f), header=None, sep=";") for f in zf.namelist()]
    df = pd.concat(dfs,ignore_index=True)
    print(df)

我會嘗試通過兩個途徑解決它。 首先,將zipfile的內容提取到文件系統中。 第二次通過,使用上面已經有的方法讀取所有提取的CSV:

import glob
import pandas as pd
import zipfile

def extract_files(file_path):
  archive = zipfile.ZipFile(file_path, 'r') 
  unzipped_path = archive.extractall()
  return unzipped_path

zipped_files = glob.glob("C/folder/*.zip")]
file_paths = [extract_files(zf) for zf in zipped_files]

dfs = [pd.read_csv(f, header=None, sep=";") for f in file_paths]
df = pd.concat(dfs,ignore_index=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM