我在做一个小脚本,按照一定的结构将多个文件夹压缩到多个zip文件中。我把这个结构做成了一个列表。以下是一些条目:
['E:\Documents\UFSCar\Primeiro Ano\Primeiro Semestre\Cálculo 1',
'E:\Documents\UFSCar\Primeiro Ano\Segundo Semestre\Estatistica',
'E:\Documents\UFSCar\Primeiro Ano\Segundo Semestre\Estruturas Discretas',
'E:\Documents\UFSCar\Primeiro Ano\Segundo Semestre\Introdução à Engenharia']
下面是两种将文件压缩在一起的方法。在
^{pr2}$脚本的主要部分如下:
for i in range(len(myList)):
zipit(myList[i],os.path.split(myList[i])[1])
我使用了数字索引,因为这样可以使脚本在大量文件中运行良好。在那之前,我们只写了两个zipfiles。这样的话,大约有8个到达终点。不知道为什么。在
该脚本只需迭代列表并将每个列表压缩为一个单独的zipfile。当列表的大小更大时,问题就发生了。我收到以下错误消息。在
Traceback (most recent call last):
File "E:\Documents\UFSCar\zipit.py", line 76, in <module>
zipit(listaDisciplinas[i],os.path.split(listaDisciplinas[i])[1])
File "E:\Documents\UFSCar\zipit.py", line 22, in zipit
zippy(path, archive)
File "E:\Documents\UFSCar\zipit.py", line 11, in zippy
zippy(p,archive)
File "E:\Documents\UFSCar\zipit.py", line 11, in zippy
zippy(p,archive)
File "E:\Documents\UFSCar\zipit.py", line 13, in zippy
archive.write(p)
File "C:\Python27\lib\zipfile.py", line 994, in write
mtime = time.localtime(st.st_mtime)
ValueError: (22, 'Invalid argument')
有人知道是什么导致了这个错误吗? 谢谢!在
编辑:
我用下面提供的代码测试了这些文件,问题是文件的“上次修改”时间戳有问题。不知什么原因,其中一些人最后一次修改是在2049年。在
在这种情况下,Python zipfile模块在压缩文件时失败,因为抛出了ValueError。在
编辑有问题的文件的机会。也许有一天我会验证有没有更好的解决办法。在
谢谢大家的帮助。在
与此问题相关的错误报告已于2007年提交:http://bugs.python.org/issue1760357
这个问题是由Windows localtime函数中的一个错误引起的,除了抛出一个ValueError之外,时间模块别无选择。在
我解决了这样的问题:
在实用时间将文件的访问和修改时间更新为当前时间。在
看看这个效果是否更好。至少,您会发现哪个文件出现故障以及原因。在
mtime
是上次修改文件的时间戳。所以,对于一个文件,它可能在某种程度上是无效的。找出是什么文件导致的,然后调用os.stat(filename).st_mtime
来检查它。在相关问题 更多 >
编程相关推荐