我的问题与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"在数字之后
答案 0 :(得分:4)
我将尝试仅使用文件名而不是日期来解决它。
您必须在应用标准之前转换为整数,或者将alphanum排序应用于整个文件名
概念证明:
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
-1
sort
即可找到最大值,只需将密钥直接传递给max
tuple
密钥)答案 1 :(得分:1)
使用以下正则表达式,您可以获取每个文件的编号:
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将是您的最高文件名。