我需要遍历给定目录的子目录并搜索文件。如果我得到一个文件,我必须打开它,更改内容,并用我自己的行替换它。
我试过这个:
import os
rootdir ='C:/Users/sid/Desktop/test'
for subdir, dirs, files in os.walk(rootdir):
for file in files:
f=open(file,'r')
lines=f.readlines()
f.close()
f=open(file,'w')
for line in lines:
newline = "No you are not"
f.write(newline)
f.close()
但我犯了个错误。我做错什么了?
截至2019年,^{} 似乎是最能解决Python问题的解决方案,即:
输出:
注:
1-glob.iglob
2-如果递归是
True
,则模式'**'
将匹配任何文件和 零个或多个directories
和subdirectories
。3-如果目录包含以
.
开头的文件,则默认情况下不会匹配这些文件。例如,考虑一个包含card.gif
和.card.gif
的目录:是的。
实际遍历目录的工作方式与您对其进行编码的方式相同。如果用简单的
print
语句替换内部循环的内容,则可以看到找到了每个文件:如果在运行上述程序时仍有错误,请提供错误消息。
为Python3更新
返回子目录中所有文件的另一种方法是使用Python 3.4中引入的the ^{} module ,它提供了一种面向对象的方法来处理文件系统路径(Pathlib在Python 2.7上也可以通过the pathlib2 module on PyPi):
自Python 3.5以来,
glob
模块还支持递归文件查找:上述两种方法中的
file_list
都可以在不需要嵌套循环的情况下进行迭代:相关问题 更多 >
编程相关推荐