如何用 Python 遍历当前目录所有子目录的指定文件进行替换操作?

我想用 Python 遍历当前文件夹下的所有子目录, 并把里面所有的 Test.f03 文件里面的 Source 替换成 Target

# encoding: utf-8
import re
import os
import sys

filepath = []

def AlterContent(filepath):
    Target_File = 'Test.f03'
    FileOpen = open (Target_File,'r')
    w_str = ""
    for line in FileOpen:
        if re.search ('Source', line):
            line = re.sub ('Source', 'Target', line)
            w_str += line
        else:
            w_str += line
    print (w_str)
    WriteOpen = open (Target_File,'w')
    WriteOpen.write (w_str)
    FileOpen.close ()
    WriteOpen.close ()
AlterContent(filepath)

遍历目录的部分怎么写呢.

“当前目录的所有子目录的指定文件” 是指“当前目录的所有子目录 里面 的指定文件” 吗?
若果是的话:

import os
root = r'd:\\'#当前目录
list = os.listdir(root)
fileName = 'Test.f03'

for str in list:
    print(str)
    path = os.path.join(root, str)

    if not os.path.isdir(path):
        continue

    subpath = os.path.join(path, fileName)

    if not os.path.exists(subpath):
        continue

    AlterContent(subpath)
 rootdir = ''
list = os.listdir(rootdir)
for i in range(0,len(list)):
    path = os.path.join(rootdir,list[i])
    if os.path.isfile(path):
            if path == 'Test.f03':
                    AlterContent(path)

另外,你现有代码的
Target_File = 'Test.f03'
需要修改为Target_File = filepath

注释很详细了,主要说一点是,打开文件参数应该传路径+文件名

#conding=utf8

import os
import re

root = 'F:\wxx\testpycode'#这里填充想要遍历的文件目录
filename = 'Test.f03'#对比的文件名
lists = os.walk(root)

def AlterContent(filepath):#打开的应该是整个文件路径,而不是'Test.f03'
with open(filepath, 'r', encoding='utf-8') as fr:#读取内容
content = fr.read()
#print(content)
content = re.sub ('Source', 'Target', content)#替换内容
#print(content)
with open(filepath, 'w', encoding='utf-8') as fw:#写入新内容
fw.write(content)

for path,dirs,files in lists:
for f in files: #遍历所有文件名
if f == filename:#应该比较的是文件名
aimfilepath=os.path.join(path, f)#文件名和目录组成目标文件路径
print(aimfilepath)
AlterContent(aimfilepath)

 import sys
import os


def replace_filename(file_path, var1, var2):
    for root, dirs, files in os.walk(file_path):
        for file_name in files:
            if var1 in file_name:
                os.rename(os.path.join(root, file_name), os.path.join(root, file_name.replace(var1, var2)))
                print('new file name is {0}'.format(file_name.replace(var1, var2)))


replace_filename(sys.argv[1], sys.argv[2], sys.argv[3])

 #!coding=utf-8
import sys
import os


def replace_filename(file_path, var1, var2):
    for root, dirs, files in os.walk(file_path):
        for file_name in files:
            if var1 in file_name:
                os.rename(os.path.join(root, file_name), os.path.join(root, file_name.replace(var1, var2)))
                print('new file name is {0}'.format(file_name.replace(var1, var2)))


replace_filename(r'E:\你的路径\Test.f03', 'Source', 'Target')###修改下第一个参数即可