在文件名中编号最大的目录中查找文件

Find file in directory with the highest number in the filename

我的问题与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”

我将尝试仅使用文件名而不是日期来解决它。

您必须先转换为整数,然后才能将条件或字母数字排序应用于整个文件名

概念验证:

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

  • 关键函数提取文件末尾找到的数字并转换为整数,如果没有找到returns -1
  • 不需要sort求最大值,直接把key传给max就可以了
  • 如果 2 个文件有相同的索引,使用完整的文件名来打破平局(这解释了 tuple 键)

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

import re

maxn = 0
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.
    maxn = num if num > maxn else maxn

在循环结束时,maxn 将是您的最大文件名编号。