Adi*_*ous 14 python python-2.7
我的问题如下.我想列出我的目录及其子目录中的所有文件名,并将该输出打印在txt文件中.现在这是我到目前为止的代码:
import os
for path, subdirs, files in os.walk('\Users\user\Desktop\Test_Py'):
for filename in files:
f = os.path.join(path, filename)
a = open("output.txt", "w")
a.write(str(f))
Run Code Online (Sandbox Code Playgroud)
这将列出文件夹中的文件名(有6个),但每个新文件都会覆盖旧文件,因此在任何给定时间,output.txt文件中只有一个文件名.如何更改此代码以便将所有文件名写入output.txt文件?
gef*_*fei 27
不要在for循环中打开文件.在for循环之前打开它
像这样
import os
a = open("output.txt", "w")
for path, subdirs, files in os.walk(r'C:\Users\user\Desktop\Test_Py'):
for filename in files:
f = os.path.join(path, filename)
a.write(str(f) + os.linesep)
Run Code Online (Sandbox Code Playgroud)
或者使用上下文管理器(这是更好的做法):
import os
with open("output.txt", "w") as a:
for path, subdirs, files in os.walk(r'C:\Users\user\Desktop\Test_Py'):
for filename in files:
f = os.path.join(path, filename)
a.write(str(f) + os.linesep)
Run Code Online (Sandbox Code Playgroud)
您正在以写入模式打开文件.你需要追加模式.有关详细信息,请参阅手册
更改
a = open("output.txt", "w")
Run Code Online (Sandbox Code Playgroud)
至
a = open("output.txt", "a")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50831 次 |
| 最近记录: |