0

在使用 glob 函数匹配列表中文件名的模式后,我试图查找特定目录中存在的文件。但这没有返回任何输出。下面是代码

FileDetail=list(SourceFileName.split(',')     
  print(FileDetail)   
  for line in FileDetail:    
   FileList = SourceFileDirectory+line+"*.txt" 
   print(FileList)
   for file_name in glob.glob(FileList):    
    print(file_name)

#Current Values#
FileDetail 列表的值为“[abc,xyz]”
FileList 将具有以下值

C:\Users\akash\Desktop\Python\SourceFile\ABC*.txt
C:\Users\akash\Desktop\Python\SourceFile\XYZ*.txt

源文件目录将包含以下文件
ABC01242021.txt
ABC01252021.txt
XYZ01242021.txt
XYZ01252021.txt

目前 file_name 为空白

#预期输出#
ABC01252021.txt
XYZ01252021.txt

4

1 回答 1

0

手动构建路径容易出错。尝试os.pathpathlib打包。

文件名似乎是固定大小的,因此可以直接Path比较max()。结果latest_file_name是一个Path对象。

如果str首选 a ,请使用str(latest_file_name)将其强制转换为 a str

from pathlib import Path

FileDetail = list(SourceFileName.split(','))
for line in FileDetail:
    print("Pattern", line)

    try:
        latest_file_name = max(Path(SourceFileDirectory).glob(f"{line}*.txt"))
    except ValueError:
        # max() raise ValueError if the input is empty
        print("No file matches the pattern", line)
        continue

    print(latest_file_name)
    print(latest_file_name.name)  # the name attribute contain the file basename.

于 2021-04-07T09:29:16.907 回答