我需要遍历给定目录的子目录并搜索文件。如果我得到一个文件,我必须打开它,更改内容,并用我自己的代码行替换它。
我试过这个:
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()
但是我得到了一个错误。我做错了什么?
发布于 2017-05-28 23:11:39
返回子目录中所有文件的另一种方法是使用Python3.4中引入的the pathlib
module,它提供了一种面向对象的方法来处理文件系统路径(在Python2.7上也可以通过the pathlib2 module on PyPi获得Pathlib):
from pathlib import Path
rootdir = Path('C:/Users/sid/Desktop/test')
# Return a list of regular files only, not directories
file_list = [f for f in rootdir.glob('**/*') if f.is_file()]
# For absolute paths instead of relative the current dir
file_list = [f for f in rootdir.resolve().glob('**/*') if f.is_file()]
从Python3.5开始,glob
模块也支持递归文件查找:
import os
from glob import iglob
rootdir_glob = 'C:/Users/sid/Desktop/test/**/*' # Note the added asterisks
# This will return absolute paths
file_list = [f for f in iglob(rootdir_glob, recursive=True) if os.path.isfile(f)]
以上任何一种方法的file_list
都可以在不需要嵌套循环的情况下迭代:
for f in file_list:
print(f) # Replace with desired operations
https://stackoverflow.com/questions/19587118
复制相似问题