遍历文件时,如何将每个文件名附加到列表中? [复制]
Posted
技术标签:
【中文标题】遍历文件时,如何将每个文件名附加到列表中? [复制]【英文标题】:While iterating through files, how to append each filename to a list? [duplicate] 【发布时间】:2021-04-22 04:11:39 【问题描述】:我正在遍历文件文件夹,从 xml 中提取一些文本,并希望跟踪每个文本匹配来自哪个文件。
我希望将文件名放入 filename_master 列表中。我认为使用正则表达式(每个文件名有 14 个数字 .xml)可能会使我过于复杂,但这不会发生在我身上。
path = '/Users/Downloads/PDF/XML/'
read_files = glob.glob(os.path.join(path, '*.xml'))
filename_master=[]
text_master=[]
for file in read_files:
parse = ET.parse(file)
root = parse.getroot()
all_nodes = list(root.iter())
ls=[ele.text for ele in all_nodes if ele.findall('[@mark="1"]')]
my_exp = re.compile(r'.*(\d14)\.xml')
name = my_exp.match(file).group(1)
filename_master.append(name)
text_master.append(ls)
【问题讨论】:
【参考方案1】:如果你确定每个文件都有 14 位,你可以
name = file[-18:-4]
filename_master.append(name)
或者如果您在 linux 环境中(其中“/”是路径分隔符):
name = file.split('/')[-1][:-4]
filename_master.append(name)
或更好:
name = os.path.basename(file)[:-4]
filename_master.append(name)
但是恕我直言,使用正则表达式很好。
【讨论】:
以上是关于遍历文件时,如何将每个文件名附加到列表中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在复制粘贴时覆盖 VS Code 中的文件(而不是将 *.1* 附加到文件名)?
Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中