【问题标题】:Create a variable path using glob.glob and os.path.join in python在 python 中使用 glob.glob 和 os.path.join 创建变量路径
【发布时间】:2022-01-24 04:43:07
【问题描述】:

我正在使用 Python 3.6,并且想知道如何创建变量路径以根据更改的年份文件夹定位文件。我有以下文件路径:

C:\Users\al123\Desktop\scripts_test\tutorials\2021\Conference\Notes\single notes\Conference notes content.txt

此代码为我提供了名称中带有“notes”一词的正确文件:

for name in glob.glob(r'C:\Users\al123\Desktop\scripts_test\tutorials\2021\**\*notes*.txt',recursive=True):
    print(name)

但是,有一个 2021 文件夹和一个 2022 文件夹,我希望它根据今天的日期动态更改。我将有一个变量b,它根据今天的日期为我提供年份。假设年份文件夹之前的路径是相同的,当我尝试使用 os.path.join 为年份添加变量 b 时,它什么也没给我:

a=r'C:\Users\al123\Desktop\scripts_test\tutorials'
b=(date.today()-timedelta(days=1)).strftime('%Y')
c=r'**\*notes*.txt'
for name in glob.glob(os.path.join(a,b,c)):
    print(name)

我需要进行哪些更改才能使其正常工作?

【问题讨论】:

    标签: python glob os.path


    【解决方案1】:

    这是一种略有不同的方法,但您可以将其转换为 lambda 表达式:

    plain_path = r'C:\Users\al123\Desktop\scripts_test\tutorials\{year}\**\*notes*.txt'
    variable_path = lambda year: plain_path.format(year=year)
    
    print(variable_path(2001))
    # C:\Users\al123\Desktop\scripts_test\tutorials\2001\**\*notes*.txt
    
    print(variable_path(2002))
    # C:\Users\al123\Desktop\scripts_test\tutorials\2002\**\*notes*.txt
    

    【讨论】:

    • 与我尝试做的相比,这是一种更优雅的方法。它工作得很好。谢谢。
    【解决方案2】:

    您忘记了 recursive=True 关键字参数:

    for name in glob.glob(os.path.join(a,b,c), recursive=True):
        print(name)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多