当我将 .txt 文件写入 zip 文件(使用 .txt 文件的路径)时,默认情况下它会在 zip 文件中创建文件夹?

When I write .txt files to zip file (using the paths of the .txt files), it creates folders within the zip file by default?

提问人:ifrj 提问时间:7/28/2023 更新时间:7/28/2023 访问量:27

问:

因此,我有一个列表,其中包含两个文本文件的路径:

file_paths = ['/tmp/bmex-2023-07-28-w0hrsh25/MFII_MC_TICK_H_20230703.TXT', '/tmp/bmex-2023-07-28-w0hrsh25/MFII_MC_TICK_AE_20230703.TXT']

我想将这两个文本文件写入一个 zip 文件,我这样做:

with ZipFile(str(new_file), 'w', compression=ZIP_DEFLATED) as merged_archive:
    for file in file_paths:
        with open(file, 'r') as f:
            merged_archive.writestr(file, f.read())

我省略了一些细节,它非常复杂,但如果相关,我可以包含它。我不认为是,唯一相关的部分是有问题的 zip 文件。new_filemerged_archive

当我打开zip文件时,我期望两个文本文件,但是当我执行上述操作并打开zip文件后,我得到:

zip_file/
├── tmp/
    ├── embedded/
        ├── bmex-equities3-2023-07-28-n3matya5
             └── two_text_files_are_here

我可以理解它为什么要创建这些目录,显然是因为我向它提供了文件路径而不是文件名。

但是我想不出解决方案,因为如果我只给它提供文件名,它会返回如下内容:

FileNotFoundError: [Errno 2] No such file or directory: 'MFII_MC_TICK_H_20230703.TXT'

我完全理解!

有什么想法吗?

python 文件 文本 zip

评论

0赞 ivvija 7/28/2023
编辑2:无法正确阅读,请参阅此问答。-- 你把整个路径放进去,在ZIP中创建它。仅提取文件名并使用它。编辑:压缩文件夹中的所有文件时,您可能也会对shutil.make_archive感兴趣。writestr
0赞 ifrj 7/28/2023
谢谢@ivvija,正如问题底部提到的,如果我只是输入文件名,我会遇到一个 - 有什么想法如何克服这个问题吗?FileNotFoundError
0赞 ifrj 7/28/2023
好的,忽略我的评论 - 我刚刚点击了你的链接!

答: 暂无答案