如何获取包括目录在内的完整文件路径?
How to get the full file path including the directory?
我有一个非常复杂的问题。我在一个列表中有多个文件名,这些文件的根目录是相同的:mother_directory
。但是每个文件都有不同的子目录。现在我有一个正在处理一些文件的脚本,我需要知道确切的完整路径,包括每个文件的子目录。我知道我可以使用 os.walk
但这会使我的函数过于嵌套,因为在这个函数中我打算使用另一个使用这些完整路径的函数。
这是文件结构:
mother_directory:
|_child1:
20211011.xml
20211001.xml
|_child2:
20211002.xml
这是我当前的代码:
mother_path = r'c:\data\user1\Desktop\mother_directory'
blue_dates = ['20211011', '20211012', '20211013', '20211001', '20211002']
red_dates = ['20211011', '20211009', '20211008', '20211001', '20211002']
file_names = ['20211011.xml', '20211001.xml', '20211002.xml']
def process_files(x):
if x in red_dates:
match_file = [s for s in file_names if x in s]
file_path = os.path.join(mother_path, match_file [0])
print(file_path)
for x in blue_dates:
process_files(x)
我当前的输出:
c:\data\user1\Desktop\mother_directory211011.xml
c:\data\user1\Desktop\mother_directory211001.xml
c:\data\user1\Desktop\mother_directory211002.xml
当我 运行 我的函数时,我希望我想要的输出是这样的:
c:\data\user1\Desktop\mother_directory\child1211011.xml
c:\data\user1\Desktop\mother_directory\child1211001.xml
c:\data\user1\Desktop\mother_directory\child2211002.xml
我添加了一个条件,我相信它现在可以工作了。
def process_files(x):
if x in red_dates:
match_file = [s for s in file_names if x in s]
for root, dirs, files in os.walk(mother_path):
for file in files:
if match_file[0] in file:
print(os.path.join(root,match_file[0]))
我有一个非常复杂的问题。我在一个列表中有多个文件名,这些文件的根目录是相同的:mother_directory
。但是每个文件都有不同的子目录。现在我有一个正在处理一些文件的脚本,我需要知道确切的完整路径,包括每个文件的子目录。我知道我可以使用 os.walk
但这会使我的函数过于嵌套,因为在这个函数中我打算使用另一个使用这些完整路径的函数。
这是文件结构:
mother_directory:
|_child1:
20211011.xml
20211001.xml
|_child2:
20211002.xml
这是我当前的代码:
mother_path = r'c:\data\user1\Desktop\mother_directory'
blue_dates = ['20211011', '20211012', '20211013', '20211001', '20211002']
red_dates = ['20211011', '20211009', '20211008', '20211001', '20211002']
file_names = ['20211011.xml', '20211001.xml', '20211002.xml']
def process_files(x):
if x in red_dates:
match_file = [s for s in file_names if x in s]
file_path = os.path.join(mother_path, match_file [0])
print(file_path)
for x in blue_dates:
process_files(x)
我当前的输出:
c:\data\user1\Desktop\mother_directory211011.xml
c:\data\user1\Desktop\mother_directory211001.xml
c:\data\user1\Desktop\mother_directory211002.xml
当我 运行 我的函数时,我希望我想要的输出是这样的:
c:\data\user1\Desktop\mother_directory\child1211011.xml
c:\data\user1\Desktop\mother_directory\child1211001.xml
c:\data\user1\Desktop\mother_directory\child2211002.xml
我添加了一个条件,我相信它现在可以工作了。
def process_files(x):
if x in red_dates:
match_file = [s for s in file_names if x in s]
for root, dirs, files in os.walk(mother_path):
for file in files:
if match_file[0] in file:
print(os.path.join(root,match_file[0]))