Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 压缩了属于相同月份的文件_Python_Zipfile - Fatal编程技术网

Python 压缩了属于相同月份的文件

Python 压缩了属于相同月份的文件,python,zipfile,Python,Zipfile,我有一个名为“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 = csvfil

我有一个名为“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

但由于没有按排序顺序,它会返回不寻常的结果。我想根据月份对文件进行压缩,并将压缩后的文件命名为相应的monthyear

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

替换

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



对于大量的.csv文件,这可能变得不易处理,您可能需要重新考虑您的算法,但对于少量的文件,这很好。

有多少个
.csv
s?你可以对它们进行排序,按月分区,然后对每个分区进行压缩。超过20@erip按日期将它们排序,然后按照顺序写入zipfile。你说不按排序是什么意思?问题到底是什么?@马蒂诺把你的月份考虑为<代码> 04, 05,04 < /代码>。
for csvfiles in sorted(os.listdir("DataFiles")):