Python 将不同扩展名的文件名写入不同的文本文件
我正在尝试这个代码。如何将扩展名为ex.doc的系统中的所有文件写入桌面中名为all_docs.txt的文件?for循环内的file.write()只将每个扩展名的最后一行写入文件。您需要以追加模式(Python 将不同扩展名的文件名写入不同的文本文件,python,file-handling,os.walk,Python,File Handling,Os.walk,我正在尝试这个代码。如何将扩展名为ex.doc的系统中的所有文件写入桌面中名为all_docs.txt的文件?for循环内的file.write()只将每个扩展名的最后一行写入文件。您需要以追加模式(a)而不是写入模式(w)打开日志文件,因为使用w时,文件在写入任何新内容之前会被截断(所有内容都被删除) 您可以查看的文档。还概述了所有文件模式 它与a一起工作吗?您需要以附加模式(a)而不是写入模式(w)打开日志文件,因为在写入任何新内容之前,使用w会截断文件(删除所有内容) import os
a
)而不是写入模式(w
)打开日志文件,因为使用w
时,文件在写入任何新内容之前会被截断(所有内容都被删除)
您可以查看的文档。还概述了所有文件模式
它与
a
一起工作吗?您需要以附加模式(a
)而不是写入模式(w
)打开日志文件,因为在写入任何新内容之前,使用w
会截断文件(删除所有内容)
import os
exts = ['ppt', 'pptx', 'doc', 'docx', 'txt', 'pdf', 'epub']
files = []
for root, dirnames, filenames in os.walk('.'):
for i in exts:
for file in filenames:
if file.endswith(i):
file1 = os.path.join(root, file)
print(file1)
with open(os.getcwd()+ r"\ally_"+i+".txt", 'w+') as f:
f.write("%s\n" % file1)
您可以查看的文档。还概述了所有文件模式
它是否适用于a
import os
exts = ['ppt', 'pptx', 'doc', 'docx', 'txt', 'pdf', 'epub']
files = []
for root, dirnames, filenames in os.walk('.'):
for i in exts:
for file in filenames:
if file.endswith(i):
file1 = os.path.join(root, file)
print(file1)
with open(os.getcwd()+ r"\ally_"+i+".txt", 'w+') as f:
f.write("%s\n" % file1)
根据“w+”操作截断文件
模式“r+”、“w+”和“a+”打开文件进行更新(读写)请注意,“w+”会截断文件
根据“w+”操作截断文件
模式“r+”、“w+”和“a+”打开文件进行更新(读写)请注意,“w+”会截断文件
open
的模式w+
会导致截断文件,这是丢失行的原因,只有最后一行会留在那里。
另一个小问题是,这种连接路径和文件名的方法不可移植。为此,您应该使用useros.path.join
with open(os.getcwd()+ r"\ally_"+i+".txt", 'w+') as f:
f.write("%s\n" % file1)
另一个问题可能是在有许多目录和文件的情况下,您的周性能。
在您的代码中,您运行每个扩展名的目录中的文件名,并一次又一次地打开输出文件。
还有一个问题是检查扩展。在大多数情况下,可以通过检查文件名的结尾来确定扩展名,但有时会产生误导。例如,'.doc'
是一个扩展名,但是在文件名'Medoc'
中,一个名称的结尾'doc'
只有3个字母。
因此,我给出了这些问题的示例解决方案:
with open(os.path.join(os.getcwd(),"ally_"+i+".txt"), 'a') as f:
f.write("%s\n" % file1)
open
的模式w+
会导致截断文件,这是丢失行的原因,只有最后一行会留在那里。
另一个小问题是,这种连接路径和文件名的方法不可移植。为此,您应该使用useros.path.join
with open(os.getcwd()+ r"\ally_"+i+".txt", 'w+') as f:
f.write("%s\n" % file1)
另一个问题可能是在有许多目录和文件的情况下,您的周性能。
在您的代码中,您运行每个扩展名的目录中的文件名,并一次又一次地打开输出文件。
还有一个问题是检查扩展。在大多数情况下,可以通过检查文件名的结尾来确定扩展名,但有时会产生误导。例如,'.doc'
是一个扩展名,但是在文件名'Medoc'
中,一个名称的结尾'doc'
只有3个字母。
因此,我给出了这些问题的示例解决方案:
with open(os.path.join(os.getcwd(),"ally_"+i+".txt"), 'a') as f:
f.write("%s\n" % file1)
请重新格式化您的代码什么东西不起作用?有问题吗?ally_doc.txt文件中的输出仅包含1个文件名。但我希望我的.doc扩展名系统中的所有文件都写入ally_doc.txt。我应该如何处理这个问题?我认为您需要以“a”(追加)模式打开文件是的。“a”模式有效!!非常感谢:)请重新格式化您的代码什么东西不起作用?有问题吗?ally_doc.txt文件中的输出仅包含1个文件名。但我希望我的.doc扩展名系统中的所有文件都写入ally_doc.txt。我应该如何处理这个问题?我认为您需要以“a”(追加)模式打开文件是的。“a”模式有效!!非常感谢:)对!你将如何处理这个问题?这肯定会有帮助的。我已经编辑了答案以包含我的建议。对!你将如何处理这个问题?这肯定会有帮助的。我对答案进行了编辑,以包含我的建议。