我需要将路径上的特定文件压缩到一起。 我需要找到某些文件(例如:AAA.txt、BBB.inf等),但名称中包含SFF的文件除外,然后将它们压缩在一起
每次我运行它时,我的DB.zip
最后只有CCC.txt
在里面。这意味着每次脚本从集合中找到一个文件时,它都会创建一个新的DB.zip
,其中包含该新文件,覆盖上一个文件。我怎样才能解决这个问题
import os
import zipfile
pr_directory = r'C:\Users\vijo9001\Desktop\Infact'
pr_path = os.listdir(pr_directory)
dst = r'C:\Users\vijo9001\Desktop\Infact'
os.chdir(r'C:\Users\vijo9001\Desktop\Infact')
my_set = {
"AAA",
"BBB",
"CCC"
}
for file in pr_path:
zip_file = pr_directory + '/' + 'DB.zip'
for x in my_set:
if 'SFF' in file:
continue
if (str(x)) in file:
zip = zipfile.ZipFile(zip_file, "w",)
zip.write(file, compress_type=zipfile.ZIP_DEFLATED)
zip.close()
关于我发现的代码,您可能需要优化/纠正以下几点:
zip
通过for循环在每个迭代中实例化,并相互覆盖。 这意味着您将为文件“AAA1.txt”生成一个DB.zip文件,然后用只包含文件“AAA2.txt”的DB.zip文件覆盖它,依此类推。通过在for循环之前启动zip,您将依次添加每个文件,生成一个包含所有文件的DB.zip李>if any(x in file_split for x in my_set)
zip_file
只需在for循环之前移动,即可正确地执行declarzip
zip
隐藏zip库,为了更清晰和避免错误,最好重命名变量(我在下面的代码中使用了zip_dir)我仔细研究了一下您的代码,得出了以下代码片段:
这对我来说似乎很管用。希望我能帮上忙
相关问题 更多 >
编程相关推荐