作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个根目录,其中包含多个子目录,所有子目录都包含一个文件名 data.txt。我想做的是编写一个脚本,该脚本接受“根”目录,然后读取所有子目录并读取子目录中的每个“data.txt”,然后将每个 data.txt 文件中的内容写入输出文件。
这是我的代码片段:
import os
import sys
rootdir = sys.argv[1]
with open('output.txt','w') as fout:
for root, subFolders, files in os.walk(rootdir):
for file in files:
if (file == 'data.txt'):
#print file
with open(file,'r') as fin:
for lines in fin:
dosomething()
我的 dosomething() 部分——如果我只为一个文件运行该部分,我已经测试并确认它可以工作。我还确认,如果我告诉它打印文件(注释掉的行),脚本会打印出“data.txt”。
如果我现在运行它,Python 会给我这个错误:
File "recursive.py", line 11, in <module>
with open(file,'r') as fin:
IOError: [Errno 2] No such file or directory: 'data.txt'
我不确定它为什么找不到它——毕竟,如果我取消注释“打印文件”行,它会打印出 data.txt。我做错了什么?
最佳答案
您需要使用绝对路径,您的 file
变量只是没有目录路径的本地文件名。 root
变量就是那个路径:
with open('output.txt','w') as fout:
for root, subFolders, files in os.walk(rootdir):
if 'data.txt' in files:
with open(os.path.join(root, 'data.txt'), 'r') as fin:
for lines in fin:
dosomething()
关于python - 如何递归遍历所有子目录并读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13571134/
我是一名优秀的程序员,十分优秀!