我已经阅读了所有关于循环子文件夹的堆栈交换帮助文件,以及操作系统文档,但我还是被卡住了。我正在尝试循环子文件夹中的文件,打开每个文件,提取第一行中的第一个数字,将文件复制到另一个子文件夹(同名,但在输出目录中),并以数字作为后缀重命名文件副本。在import os
import re
outputpath = "C:/Users/Heather/Dropbox/T_Files/Raw_FRUS_Data/Wisconsin_Copies_With_PageNumbers"
inputpath = "C:/Users/Heather/Dropbox/T_Files/Raw_FRUS_Data/FRUS_Wisconsin"
suffix=".txt"
for root, dirs, files in os.walk(inputpath):
for file in files:
file_path = os.path.join(root, file)
foldername=os.path.split(os.path.dirname(file_path))[1]
filebname=os.path.splitext(file)[0]
filename=filebname + "_"
f=open(os.path.join(root,file),'r')
data=f.readlines()
if data is None:
f.close()
else:
with open(os.path.join(root,file),'r') as f:
for line in f:
s=re.search(r'\d+',line)
if s:
pagenum=(s.group())
break
with open(os.path.join(outputpath, foldername,filename+pagenum+suffix), 'w') as f1:
with open(os.path.join(root,file),'r') as f:
for line in f:
f1.write(line)
我希望结果是输入目录中文件的副本,这些文件放在输出目录的相应子文件夹中,并用后缀重命名,例如“005_2”,其中005是原始文件名,2是从中提取的python代码的编号。在
我得到的错误似乎表明我没有正确地循环文件。我知道提取第一个数字和重命名文件的代码是可行的,因为我在单个文件上测试了它。但是使用手术室步行循环访问多个子文件夹是行不通的,我也不知道我做错了什么。错误如下:
^{pr2}$