【问题标题】:Working with multiple ZIP files inside directory and convert, rename the files with Python使用目录中的多个 ZIP 文件并使用 Python 转换、重命名文件
【发布时间】:2020-07-25 17:43:18
【问题描述】:

我的目录有很多 ZIP 文件。 ZIP 文件包含大量 CSV 文件。首先,我想将 CSV 文件的格式更改为 parquet。其次,我需要重命名所有 parquet 文件并将数据存储到 CSV 中。 (下面的代码)。我需要使用 zip 文件而不是提取文件以节省一些存储空间。

以下是转换为 .parquet 的代码。

flist = ul.get_flist(r"D:\Proyekan\Data yang udah di extract", "csv")
target_folder = "D:\\Proyekan\\Data yang udah di extract\\Parquet\\"
for i, fpath in enumerate(flist):
    #fname = fpath.split('\\')[-1]
    df = pd.read_csv(fpath)
    fname = fpath.split('\\')[-1].split('.')[0] + '.parquet'
    print(f"{i:03} ... Working on file ... {fname}")
    df.to_parquet(f"{target_folder}{fname}", compression="gzip")

下面是重命名文件的代码

import os
import pandas as pd
#This is to rename files

path = "D:\Proyekan\Data FDM"
count = 1

ori_filename = []
new_filename = []
folder = []
head, tail = os.path.split(path)
for root, dirs, files in os.walk(path):
    for file in files:
        new_filecode = "flight_" + str(1000000 + count) +".mat"

        ori_filename.append(os.path.basename(file))
        new_filename.append(new_filecode)
        folder.append(os.path.basename(root))

        fullpath = os.path.join(root,file)
        os.rename(fullpath, os.path.join(root, new_filecode))

        count += 1

#Store data to csv
df = pd.DataFrame(list(zip(ori_filename, new_filename, folder)), columns = ['raw_file','file_id','tail_number'])
df.to_csv(r'D:\Proyekan\FILES\Metadata.csv',index = False, header = True)

任何想法如何编辑此代码以读取 ZIP 文件?任何帮助将不胜感激

【问题讨论】:

  • 忍受我。哪个先出现? IIUC,您想读取 zip 文件中的 csv 文件,然后转换为镶木地板。所以 zip -> csv -。镶木地板?还是他们分开任务?
  • 是的,就像这样,如果可以的话,我想在 1 个任务中完成。
  • 看看this 看看是否有帮助
  • 对不起,我认为这没有帮助,因为它只读取 1 个 zip @sammywemmy

标签: python pandas for-loop rename


【解决方案1】:

这是在黑暗中拍摄的,试试看,看看效果如何:

from zipfile import ZipFile
folder = 'list of zipped files'
#iterate through every zip file
for zips in folder:
    with ZipFile(zips) as myzip:
        for csv in myzip.namelist():
            with myzip.open(csv) as myfile:
                #read the csv in the zip and convert to parquet
                #if this does not work, u could break down the steps
                #read the data first into a variable, then to parquet next
                pd.read_csv(myfile).to_parquet('new_location')

【讨论】:

  • FileNotFoundError: [Errno 2] 没有这样的文件或目录:“D”出现此错误。 alr 确保目录是正确的。
猜你喜欢
  • 2016-09-24
  • 2023-04-09
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 2014-12-30
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多