Python:将文件放入没有目录的档案中吗?

发布于 2021-01-29 16:00:22

我已经学习python大约三周了,我目前正在尝试编写一个小脚本,用于按文件名中出现的关键字和日期对文件(大约10.000)进行排序。给定日期之前的文件应添加到存档中。排序工作正常,但无法存档

它会创建一个存档-名称很好-但存档中是文件的完整路径。如果我打开它,它看起来像:folder1 -> folder2 -> folder3 -> files

如何更改它,以使存档仅包含文件而不包含整个结构?

以下是带有我的zip功能的代码段,node是文件排序之前的路径,folder是子文件夹,其中文件名称中按关键字排序,items是文件夹,其文件中按日期排序。

我正在使用Python 2.6

def 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

我也欢迎任何建议和改进。

关注者
0
被浏览
39
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    从帮助(zip文件):

     |  write(self, filename, arcname=None, compress_type=None)
     |      Put the bytes from filename into the archive under the name
     |      arcname.
    

    因此,尝试使用以下命令更改您的write()调用:

    x.write(folder + '/' + item + '/' + f, arcname = f)
    

    关于您的代码,在我看来似乎已经足够好了,特别是对于一个为期3周的pythonist来说,尽管会受到一些欢迎;-)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看