我已经学习了Python约3周,目前正在尝试编写一个小脚本来按关键字和包含在文件名中的日期对文件(约10,000个)进行排序。在给定日期之前的文件应被添加到存档中。排序工作正常,但归档不起作用。
它创建了一个存档 - 名称很好 - 但在存档中是文件的完整路径。 如果我打开它,它看起来像:
它创建了一个存档 - 名称很好 - 但在存档中是文件的完整路径。 如果我打开它,它看起来像:
folder1-> folder2-> folder3-> files 。
如何更改使存档仅包含文件而不是整个结构?
下面是我的zip函数片段, node 是文件在排序前的路径, folder 是按名称中的关键字排序的子文件夹, items 是按日期排序的文件夹。
我正在使用Python 2.6def ZipFolder(node, zipdate):
xynode = node + '/xy'
yznode = node + '/yz'
for folder in [xynode,yznode]:
items = os.listdir(folder)
for item in items:
itemdate = re.findall('(?<=_)\d\d\d\d-\d\d', item)
print item
if itemdate[0] <= zipdate:
arcname = str(item) + '.zip'
x = zipfile.ZipFile(folder + '/' + arcname, mode='w', compression = zipfile.ZIP_DEFLATED)
files = os.listdir(folder + '/' + item)
for f in files:
x.write(folder + '/' + item + '/' + f)
print 'writing ' + str(folder + '/' + item + '/' + f) + ' in ' + str(item)
x.close()
shutil.rmtree(folder + '/' + item)
return
我也乐意接受任何建议和改进。
def ZipFolder(node, zipdate): """压缩“node”子文件夹中早于“zipdate”的文件"""
- rnyprint()
,甚至不是file.write()
,在文档中我也没有看到任何关于参数sep
的参考。 - rodrigox.write(os.path.join(folder,item,f),arcname=f)
。 - tufelkinder