如何解决从目录中查找最新文件
在使用 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)
#当前值#
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
解决方法
手动构建路径容易出错。试试 os.path
或 pathlib
包。
文件名似乎是固定大小的,因此可以直接将 Path
与 max()
进行比较。
结果 latest_file_name
是一个 Path
对象。
如果首选 str
,请使用 str(latest_file_name)
将其转换为 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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。