微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从目录中查找最新文件

如何解决从目录中查找最新文件

在使用 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.pathpathlib 包。

文件名似乎是固定大小的,因此可以直接将 Pathmax() 进行比较。 结果 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?