访问子文件夹中的文本文件
Accessing text file within subfolder
文件结构
我有一个名为 test_folder 的文件夹,其中有几个子文件夹(命名为不同的水果名称,您将在下面的代码中看到)。在每个子文件夹中,总是有一个 metadump.xml 文件,我从中提取信息。
当前立场
我已经能够在个人基础上实现这一点,我在其中指定了子文件夹路径。
import re
in_file = open("C:/.../Downloads/test_folder/apple/metadump.xml")
contents = in_file.read()
in_file.close()
title = re.search('<dc:title rsfieldtitle="Title"
rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>',
contents).group(1)
print(title)
后续步骤
我想通过简单地引用父文件夹 C:/.../Downloads/test_folder 并让我的程序找到 xml 来更大规模地执行以下功能为每个子文件夹提取所需的信息,而不是单独指定每个水果子文件夹。
澄清
我不是简单地获取子文件夹列表或这些子文件夹中的 xml 文件列表,而是希望物理访问这些子文件夹以从每个子文件夹中的每个 xml 文件执行此文本提取功能。
在此先感谢您的帮助。
这可能对您有帮助:
import os
for root, dirs, files in os.walk("/mydir"):
for file in files:
if file.endswith(".xml"):
print(os.path.join(root, file))
您可以使用 os.listdir 如下:
import os
parent_folder = 'C:/.../Downloads/test_folder'
subfolders = os.listdir(parent_folder)
for subfolder in subfolders:
in_file = open(parent_folder+'/'+ subfolder+'/metadump.xml')
contents = in_file.read()
in_file.close()
title = re.search('<dc:title rsfieldtitle="Title"
rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>',
contents).group(1)
print(title)
如果您不确定文件夹中的子文件夹数量,可以使用 glob 模块来执行此操作。 recursive=True
将检查文件夹 C:/../Downloads/test_folder/
中的所有子文件夹并为您提供所有 metadump.xml
文件的列表
import re
import glob
for file in glob.glob("C:/**/Downloads/test_folder/**/metadump.xml", recursive=True):
with open(file) as in_file:
contents= in_file.read()
title = re.search('<dc:title rsfieldtitle="Title"
rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>',
contents).group(1)
print(title)
您可以使用 Python 的 os.walk()
遍历所有子文件夹。如果文件是 metadump.xml
,它将打开它并提取您的标题。显示文件名和标题:
import os
for root, dirs, files in os.walk(r"C:\...\Downloads\test_folder"):
for file in files:
if file == 'metadump.xml':
filename = os.path.join(root, file)
with open(filename) as f_xml:
contents = f_xml.read()
title = re.search('<dc:title rsfieldtitle="Title" rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>', contents).group(1)
print('{} : {}'.format(filename, title))
文件结构
我有一个名为 test_folder 的文件夹,其中有几个子文件夹(命名为不同的水果名称,您将在下面的代码中看到)。在每个子文件夹中,总是有一个 metadump.xml 文件,我从中提取信息。
当前立场
我已经能够在个人基础上实现这一点,我在其中指定了子文件夹路径。
import re
in_file = open("C:/.../Downloads/test_folder/apple/metadump.xml")
contents = in_file.read()
in_file.close()
title = re.search('<dc:title rsfieldtitle="Title"
rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>',
contents).group(1)
print(title)
后续步骤
我想通过简单地引用父文件夹 C:/.../Downloads/test_folder 并让我的程序找到 xml 来更大规模地执行以下功能为每个子文件夹提取所需的信息,而不是单独指定每个水果子文件夹。
澄清
我不是简单地获取子文件夹列表或这些子文件夹中的 xml 文件列表,而是希望物理访问这些子文件夹以从每个子文件夹中的每个 xml 文件执行此文本提取功能。
在此先感谢您的帮助。
这可能对您有帮助:
import os
for root, dirs, files in os.walk("/mydir"):
for file in files:
if file.endswith(".xml"):
print(os.path.join(root, file))
您可以使用 os.listdir 如下:
import os
parent_folder = 'C:/.../Downloads/test_folder'
subfolders = os.listdir(parent_folder)
for subfolder in subfolders:
in_file = open(parent_folder+'/'+ subfolder+'/metadump.xml')
contents = in_file.read()
in_file.close()
title = re.search('<dc:title rsfieldtitle="Title"
rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>',
contents).group(1)
print(title)
如果您不确定文件夹中的子文件夹数量,可以使用 glob 模块来执行此操作。 recursive=True
将检查文件夹 C:/../Downloads/test_folder/
中的所有子文件夹并为您提供所有 metadump.xml
文件的列表
import re
import glob
for file in glob.glob("C:/**/Downloads/test_folder/**/metadump.xml", recursive=True):
with open(file) as in_file:
contents= in_file.read()
title = re.search('<dc:title rsfieldtitle="Title"
rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>',
contents).group(1)
print(title)
您可以使用 Python 的 os.walk()
遍历所有子文件夹。如果文件是 metadump.xml
,它将打开它并提取您的标题。显示文件名和标题:
import os
for root, dirs, files in os.walk(r"C:\...\Downloads\test_folder"):
for file in files:
if file == 'metadump.xml':
filename = os.path.join(root, file)
with open(filename) as f_xml:
contents = f_xml.read()
title = re.search('<dc:title rsfieldtitle="Title" rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>', contents).group(1)
print('{} : {}'.format(filename, title))