我正在开发一个小型 python 3 实用程序,以根据文件扩展名列表构建一个 zip 文件。我有一个扩展的文本文件,我正在将一个文件夹传递到脚本中:
working_folder = sys.argv[1]
zip_name = sys.argv[2]
#Open the extension file
extensions = []
with open('CxExt.txt') as fp:
lines = fp.readlines()
for line in lines:
extensions.append(line)
#Now get the files in the directory. If they have the right exttension add them to the list.
files = os.listdir(working_folder)
files_to_zip = []
for ext in extensions:
results = glob.glob(working_folder + '**/' + ext, recursive=True)
print(str(len(results)) + " results for " + working_folder + '**/*' + ext)
#search = "*"+ext
#results = [y for x in os.walk(working_folder) for y in glob(os.path.join(x[0], search))]
#results = list(Path(".").rglob(search))
for result in results:
files_to_zip.append(result)
if len(files_to_zip) == 0:
print("No Files Found")
sys.exit()
for f in files:
print("Checking: " + f)
filename, file_extension = os.path.splitext(f)
print(file_extension)
if file_extension in extensions:
print(f)
files_to_zip.append(file)
ZipFile = zipfile.ZipFile(zip_name, "w" )
for z in files_to_zip:
ZipFile.write(os.path.basename(z), compress_type=zipfile.ZIP_DEFLATED)
我已经尝试使用 glob、os.walk 和 Path.rglob,但仍然无法获得文件列表。一定有一些明显的东西我遗漏了。我构建了一个包含一些目录、py 文件和一些 zip 文件的测试目录。它为所有文件类型返回 0。我在看什么?
这是我的第一个答案,所以请不要指望它是完美的。
我注意到您正在使用 file.readlines()。根据此处的 Python 文档,file.readlines() 返回行列表,包括末尾的换行符。如果您的文本文件的扩展名由换行符分隔,则可以尝试使用 file.read().split("\n") 代替。除此之外,您的代码看起来还不错。如果此修复程序不起作用,请告诉我。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句