Python 从另一个包含字符串的文件中选择文件
我想选择data_file directory中的所有文件,这些文件包含template_file directory中文件的第一个和第二个下划线之间的字符串。 例如,在模板文件目录中有以下文件: 汉堡2020.xlsx、悉尼2020.xlsx和华盛顿2020.xlsx摘要 数据文件目录中有以下文件: 汉堡2018.xlsx、汉堡2019.xlsx、汉堡2020.xlsx、悉尼2018.xlsx、悉尼2019.xlsx、悉尼2020.xlsx、华盛顿2018.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做吗?我当前的解决方案不起作用Python 从另一个包含字符串的文件中选择文件,python,Python,我想选择data_file directory中的所有文件,这些文件包含template_file directory中文件的第一个和第二个下划线之间的字符串。 例如,在模板文件目录中有以下文件: 汉堡2020.xlsx、悉尼2020.xlsx和华盛顿2020.xlsx摘要 数据文件目录中有以下文件: 汉堡2018.xlsx、汉堡2019.xlsx、汉堡2020.xlsx、悉尼2018.xlsx、悉尼2019.xlsx、悉尼2020.xlsx、华盛顿2018.xlsx 因此,如果选择了文件摘要\
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
告诉我这是否适合你
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)告诉我这是否适合您?:
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)虽然仅代码答案可能会回答此问题,但您可以通过为代码提供上下文(这是此代码工作的原因)来显著提高答案的质量,以及一些参考文件供进一步阅读。From:“简洁是可以接受的,但更完整的解释更好。”欢迎来到Stack Overflow!非常感谢。是的,它有效。你能解释一下这行代码是如何工作的吗:city=filename1.split(“”)[1]如果filename1.count(“”)>1,则其他“无”。特别是:filename1.count(“”)>1?
code if condition else code2
-在python中称为inline if statement。在python中,第一行代码将filename
的一部分分配给第一个和第二个下划线,或者Nothing
if statement确保filename
至少包含两个下划线,否则将Nothing
分配给city
变量此代码的有趣之处在于这一行if(city!=“Nothing”)和……
我特意将Nothing
放在第一个条件中。如果city
等于Nothing
,那么如果的其余部分没有被评估,而只有代码的答案可能会回答这个问题,您可以通过提供代码的上下文、该代码工作的原因以及一些文档参考来进一步阅读,从而显著提高答案的质量。From:“简洁是可以接受的,但更完整的解释更好。”欢迎来到Stack Overflow!非常感谢。是的,它有效。你能解释一下这行代码是如何工作的吗:city=filename1.split(“”)[1]如果filename1.count(“”)>1,则其他“无”。特别是:filename1.count(“”)>1?code if condition else code2
-在python中称为inline if statement。在python中,第一行代码将filename
的一部分分配给第一个和第二个下划线,或者Nothing
if statement确保filename
至少包含两个下划线,否则将Nothing
分配给city
变量此代码的有趣之处在于这一行if(city!=“Nothing”)和……
我特意将Nothing
放在第一个条件中。如果city
等于Nothing
,则不计算的其余部分