我在下面的代码中首先尝试查找PDF文件。如果它甚至没有成功找到单个PDF文件,那么它继续搜索例如PDF文件。 .TIF文件位于同一文件夹中。
但是,我有两个问题。首先,当它在文件夹中找到PDF文件时,它还会在.txt文件中打印所有.TIF文件。但是当它找不到PDF文件时,它就会停止(即使没有 break )并且不会产生.txt文件。我很困惑,感谢任何帮助。
b = os.walk('C:\\Users\\USER\\Desktop\\FOLDER')
os.listdir('C:\\Users\\USER\\Desktop\\FOLDER')
f = []
for(dirpath, dirnames, filenames) in b:
if f.extend(os.path.splitext(name)[0] for name in filenames if name.lower().endswith((".pdf"))) == []:
pass
break
elif f.extend(os.path.splitext(name)[0] for name in filenames if name.lower().endswith((".tif"))) == []:
pass
def save_to_file(text):
for name in f:
with open('C:\\Users\\USER\\Desktop\\FOLDER\\test.txt', mode='wt', encoding='utf-8') as myfile:
myfile.write('\n'.join(text))
myfile.write('\n')
save_to_file(f)
答案 0 :(得分:2)
试试这个:
import os
def gather_files(folder, ending):
contents = os.walk(folder)
files = []
for (dirpath, dirnames, filenames) in contents:
files += ([file.splitext()[0] for file in filenames if file.lower().endswith(ending)])
return files
def main():
f = gather_files("test", ".pdf")
if not f:
f = gather_files("test", ".tif")
if not f:
print("No .pdf or .tif files found in the given directory.")
else:
with open("test_out.txt", "w", encoding="utf-8") as output:
output.write("\n".join(f) + "\n")
if __name__ == "__main__":
main()
这对你有用。作为替代方案,您可以通过硬编码文件夹和结尾等值将主要部分移动到方法gather_files,或者您可以提供关键字" alternative_ending"或者类似的方法。
也许再看一下你的代码吧。你有一个方法 save_to_file(text),你用f调用它,然后在其中迭代f。可能是一个错字,你应该迭代文本,而不是f。但是你根本不需要迭代,因为text(或f)包含文件名作为字符串列表。所以
with open("test_out.txt", "w", encoding="utf-8") as output:
output.write("\n".join(text) + "\n")
会做你想做的一切。