在filenam中编号最高的目录中查找文件

2024-05-16 20:01:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题与Python identify file with largest number as part of filename密切相关

我想把文件附加到某个目录。文件的名称是:file1,file2……file^n。如果我一次就这样做了,但是当我想再次添加文件,并想找到最后一个添加的文件(在本例中是编号最高的文件),它会识别“file6”高于“file100”。在

我怎么解决这个问题呢。在

import glob
import os

latest_file = max(sorted(list_of_files, key=os.path.getctime))
print latest_file

如你所见,我试过查看创建时间,也尝试过查看修改过的时间,但这些都是一样的,所以没有帮助。在

编辑我的文件名的扩展名是“.txt”


Tags: 文件ofimport目录numberosaswith
2条回答

使用以下正则表达式可以获得每个文件的编号:

import re

for file in list_of_files:
    num = int(re.search('file(\d*)', file).group(1))  # assuming filename is "filexxx.txt"
    # compare num to previous max, e.g.
    max = num if num > max else max  # set max = 0 before for-loop

在循环的末尾,max将是您的最高文件名编号。在

我只使用文件名而不是日期来解决它。在

在对整个文件名应用条件或字母数字排序之前,必须先转换为整数

概念证明:

import re
list_of_files = ["file1","file100","file4","file7"]

def extract_number(f):
    s = re.findall("\d+$",f)
    return (int(s[0]) if s else -1,f)

print(max(list_of_files,key=extract_number))

结果:file100

  • key函数提取在文件末尾找到的数字并将其转换为整数,如果没有找到,则返回-1
  • 您不需要sort来找到最大值,只需将密钥直接传递给max
  • 如果两个文件具有相同的索引,请使用完整文件名来中断连接(这解释了tuple键)

相关问题 更多 >