Python 2.5.2: trying to open files recursively
下面的脚本应该以递归方式打开文件夹"pruebaba"中的所有文件,但我得到了这个错误:
Traceback (most recent call last):
File
"/home/tirengarfio/Desktop/prueba.py",
line 8, in
f = open(file,'r') IOError: [Errno 21] Is a directory
这是层次结构:
1 2 3 4 5 6 7 8 9 | pruebaba folder1 folder11 test1.php folder12 test1.php test2.php folder2 test1.php |
剧本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import re,fileinput,os path="/home/tirengarfio/Desktop/pruebaba" os.chdir(path) for file in os.listdir("."): f = open(file,'r') data = f.read() data = re.sub(r'(\s*function\s+.*\s*{\s*)', r'\1echo"The function starts here."', data) f.close() f = open(file, 'w') f.write(data) f.close() |
有什么想法吗?
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import re import os from __future__ import with_statement PATH ="/home/tirengarfio/Desktop/pruebaba" for path, dirs, files in os.walk(PATH): for filename in files: fullpath = os.path.join(path, filename) with open(fullpath, 'r') as f: data = re.sub(r'(\s*function\s+.*\s*{\s*)', r'\1echo"The function starts here."', f.read()) with open(fullpath, 'w') as f: f.write(data) |
os.listdir列出了文件和目录。您应该检查您试图打开的文件是否真的是一个带有os.path.is file的文件
你想打开你看到的一切。您试图打开的一件事是一个目录;您需要检查一个条目是文件还是目录,并从中作出决定。(错误
如果它是一个目录,那么您需要对函数进行递归调用,以便遍历该目录中的文件。
或者,您可能对