简体   繁体   English

zip 将给定目录中的文件放入同一目录 python

[英]zip the files in a given directory into same directory python

I am working in a directory with path being "C:\Downloads\Project" I have a folder "Insights" in "Project" (Project\Insights) folder which has multiple text files with names being "Text1.txt", "Text2.txt"..."Text30.txt".我在路径为“C:\Downloads\Project”的目录中工作我在“Project”(Project\Insights)文件夹中有一个“Insights”文件夹,其中包含多个名称为“Text1.txt”、“Text2”的文本文件.txt"..."Text30.txt"。 Every 10 text files are supposed to be zipped into a zip file into same "Insights" folder (...\Insights\zip1.zip).每 10 个文本文件都应该压缩到 zip 文件中,并放入相同的“Insights”文件夹 (...\Insights\zip1.zip)。

How can this be done in Python?如何在 Python 中做到这一点?

When I tried zipping, text files are being stored with directory structure "...\Project\Insights\text1.txt" in zip file.当我尝试压缩时,文本文件以目录结构“...\Project\Insights\text1.txt”存储在 zip 文件中。 But I don't want the files to be stored with any directory structure.但我不希望文件以任何目录结构存储。

from zipfile import ZipFile

#dictionary of files and data in it (dummy data)
file_data={"C:\Downloads\Project\Insights\Text1.txt":"value1", 
            "C:\Downloads\Project\Insights\Text2.txt":"value2"
          }

zipp = ZipFile('Insights//zip1.zip', 'w')
for k, v in file_data.items():
    zipp.write(k)
zipp.close()

This snippet generates zip file with entire directory structure.此代码段生成具有整个目录结构的 zip 文件。 But I want the text files alone但我只想要文本文件

try this snippet:试试这个片段:

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))
      
zipf = zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('tmp/', zipf)
zipf.close()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM