【问题标题】:how to read a file name with variable in python?如何在python中读取带有变量的文件名?
【发布时间】:2021-04-22 12:31:04
【问题描述】:

我有一个包含许多 .csv 文件的文件夹,格式如下:

FGS07_NAV_26246_20210422_86oylt.xls

FGS07_NAV_26246_ 始终相同,20210422 是日期和选择文件的最重要参数,_86oylt 也会发生变化但一点也不重要。

我需要读取一个与手术日期相同的csv文件。 假设y 是我们的日期部分,所以我尝试了这段代码,但它没有给我写入名称:

file2 = r'C:/Users/name/Finance/LOF_PnL/FGS07_NAV_26246_' + y + '*.xls'
df2 = pd.read_excel(file2)

我应该如何解决?

【问题讨论】:

标签: python wildcard


【解决方案1】:

如果你只想要特定的文件,你可以试试这个:

xls_file = [file for file in os.listdir(r"C:/Users/name/Finance/LOF_PnL") if file.endswith("xls") and y in file][0]

【讨论】:

    【解决方案2】:

    你可以使用glob模块:

    import glob
    file2 = glob.glob(file2)[0]
    

    【讨论】:

      【解决方案3】:
      import os
      
      all_files = os.listdir(r'C:/Users/name/Finance/LOF_PnL')
      filtered_files = list(filter(lambda x : 'FGS07_NAV_26246_' + y in x, all_files))
      

      现在filtered_files 是一个列表,其中包含文件名中包含'FGS07_NAV_26246_' + y 的所有文件的名称。如果需要绝对路径,可以将完整路径添加到这些名称。您还可以使用正则表达式进行比in 更花哨的模式查找

      【讨论】:

        【解决方案4】:

        也许你可以尝试使用更标准的 join() 或 os.path.join()。

        "".join([str1, str2])
        os.path.join(path_to_file, filename)
        

        我希望这会有所帮助。或许还要再检查一下文件的类型。

        【讨论】:

          猜你喜欢
          • 2023-02-22
          • 1970-01-01
          • 1970-01-01
          • 2023-01-24
          • 1970-01-01
          • 1970-01-01
          • 2020-09-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多