从另一个包含字符串的文件中选择文件

2024-06-23 19:52:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想选择data_file directory中的所有文件,这些文件包含template_file directory中文件的第一个和第二个下划线之间的字符串。 例如,在模板文件目录中有以下文件:

Summary_Hamburg_2020.xlsx, Summary_Sydney_2020.xlsx and Summary_Washington_2020.xlsx

数据文件目录中有以下文件:

Data_Hamburg_2018.xlsx, Data_Hamburg_2019.xlsx, Data_Hamburg_2020.xlsx, Data_Sydney_2018.xlsx, Data_Sydney_2019.xlsx, Data_Sydney_2020.xlsx, Data_Washington_2018.xlsx, Data_Washington_2019.xlsx, Data_Washington_2020.xlsx

因此,如果选择了文件摘要\u Hamburg\u 2020.xlsx,则应在屏幕上打印文件数据\u Hamburg\u 2018.xlsx、数据\u Hamburg\u 2019.xlsx、数据\u Hamburg\u 2020.xlsx。如果选择了文件摘要\u Sydney\u 2020.xlsx,则应打印文件数据\u Sydney\u 2018.xlsx、数据\u Sydney\u 2019.xlsx、数据\u Sydney\u 2020.xlsx

可以用fnmatch做吗?我当前的解决方案不起作用

import fnmatch
import os

data_file = "C:\\2020\\New\\"
template_file = "C:\\2020\\New\\Reports\\"  

for filename1 in os.listdir(template_file):
  for filename2 in os.listdir(data_file):
    city = '_'.join(filename1.split('_')[1:2])
    if (fnmatch.fnmatch(filename1, city)):
        print(filename1, filename2)
    else:
        continue 

Tags: 文件数据dataostemplatesummaryxlsxdirectory
1条回答
网友
1楼 · 发布于 2024-06-23 19:52:15

告诉我这是否适合你

import os

data_file = "path1"
template_file = "path2"  

for filename1 in os.listdir(template_file):
    city = filename1.split('_')[1] if filename1.count('_') > 1 else 'Nothing'
    for filename2 in os.listdir(data_file):
        if (city != 'Nothing') and (filename2.count('_') > 1) and (filename2.split('_')[1] == city) :
            print(filename2)

此代码适用于某些条件,例如在path1中仅为模板文件,在path2中仅为数据文件(满足格式text1\u text2\u text3.extension)

相关问题 更多 >

    热门问题