例如 A 文件夹中有 log.txt 文件
B 文件夹中有 log.txt 文件
C文件夹中有 log.txt 文件
每个log.txt 中有result=89
需要将log.txt 中result=89 拷贝到一个指定文件中 并在前面加上文件夹名 A result=89 这样
新文件中结果为 下面这样
A result=89
B result=89
C result=89
如能解决可另外结费
import os
path=r'C:\Users\85949\Desktop\total'
dirs=os.listdir(path) #读取一级目录下面的二级目录
bc=open("最后.txt",'w+',encoding='utf-8') #要最后保存的txt
for odirs in dirs:
edir=os.path.join(path,odirs) #将一级目录与该目录下的文件夹名进行拼接(得到文件夹的绝对路径)
edirs=os.listdir(edir) #读取文件夹里面的文件
for file in edirs:
files=os.path.join(edir,file) #将文件夹的路径与该文件夹下的文件名进行拼接(得到文件的绝对路径)
a=open(files,'r')
for b in a.readlines():
c=b.strip('\n') #将遍历的这一行的换行符删除
if 'pos close'in c:
bc.write(odirs + ' ' + c + '\n')
elif 'POS CLOSE' in c: #判断该行是否有“pos close”字符
bc.write(odirs+' '+c+'\n')
bc.close()
import os
input_dir = r''#输入路径
target = '' #相同的字符串
path_list=[] #所有包含log.txt的绝对路径
result=[] #生成的结果,例如A 89
save_path=r'' #保存的路径
for root, dirs, files in os.walk(input_dir):
for file_name in files:
if file_name.endswith('log.txt'):
path = os.path.join(root, file_name)
path_list.append(path)
for i in result:
if target in i:
save_line ="{} {}".format(i,target)#按要求输入每一行
result.append(save_line)
os.makedirs(os.path.dirname(save_path), exist_ok=True)#创建保存路径,存不存在都可以
with open(save_path, 'w') as f:
f.write('\n'.join(result))#需要添加换行符
可参考如下代码:
import os
s = 'result=89'
dirs=['A','B','C']
res=[]
for d in dirs:
for fn in os.listdir(d):
with open(os.path.join(d,fn),'r') as f:
for x in [l.strip() for l in f.readlines()]:
if x==s:
res.append(f'{d} {x}')
with open('result.txt','w') as fw:
fw.write('\n'.join(res))
输出result.txt
A result=89
B result=89
C result=89
你题目的解答代码如下:
import os
import re
# 读取"E:\xxx"文件夹子文件夹
path=r"E:\xxx"
st = ""
for root, dirs, files in os.walk(path):
for d in dirs:
file_path = os.path.join(root,d,"log.txt")
if os.path.isfile(file_path):
print(file_path)
with open(file_path, 'r', encoding='utf-8') as fileObj:
s = fileObj.read()
r = re.findall(r"result=\d+",s)[0]
st += d+" "+r+"\n"
print(st)
with open(r'指定文件.txt', 'w', encoding='utf-8') as fileObj:
fileObj.write(st)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!