【问题标题】:zipped the file that belongs to same months压缩属于同一月份的文件
【发布时间】:2017-02-06 18:25:25
【问题描述】:

我有一个名为“DataFiles”的文件夹,其中有如下文件: 2016-04-26.csv、2016-04-27.csv、2016-05-12.csv... 我想压缩属于同一月份的 csv 文件... 为此我尝试了以下代码:

import datetime
import os
import zipfile

yearP= None
monthP = None

for csvfiles in os.listdir("DataFiles"):
    csvname, formata = csvfiles.split(".")
    year, month, date = csvname.split("-")
    if (yearP==year and monthP == month):
        zip = zipfile.ZipFile('%s.zip' %monthyear , 'a') 
        zip.write('%s.csv' %csvname ) 
        yearP= year
        monthP = month
    else:
        zip = zipfile.ZipFile('%s.zip' %monthyear , 'a') 
        zip.write('%s.csv' %csvname )   
        yearP= year
        monthP = month

但由于不是按排序顺序返回异常结果。我想根据月份压缩并将压缩文件命名为相应的月份年份。

【问题讨论】:

  • 有多少个.csvs?您可以对它们进行排序,按月分区,然后压缩每个分区。
  • 20多个@erip
  • 按日期对它们进行排序,然后将其写入相应的压缩文件中
  • 不按排序顺序是什么意思?究竟是什么问题?
  • @martineau 按顺序考虑你的月份04, 05, 04

标签: python zipfile


【解决方案1】:

由于您的文件是YYYY-MM-DD 格式,您可以按字典顺序对它们进行排序。

替换

for csvfiles in os.listdir("DataFiles"):

for csvfiles in sorted(os.listdir("DataFiles")):

如果有大量 .csv 文件,这可能会变得不那么容易处理,您可能需要重新考虑您的算法,但对于少数人来说,这很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多