2014-06-10 107 views
11

我试图在'upload'目录中使用'.log'扩展名中的最新文件来由Python进行处理。我使用一个Ubuntu网络服务器,文件上传由一个html脚本完成。上传的文件由Python脚本处理,结果写入MySQL数据库。我为我的代码使用了this答案。Python在特定扩展名的目录中获取最新文件

import glob 
newest = max(glob.iglob('upload/*.log'), key=os.path.getctime) 
print newest 
f = open(newest,'r') 

但是,这并没有得到目录中的最新文件,而是获取最旧的文件。为什么?

+3

尝试'min',而不是'max' - 逻辑*反向* ? –

+0

这给了我最新的文件,当我从python交互式控制台运行它。 – Himanshu

+1

考虑一下吧,你可能想'os.path.getmtime' - 创建时间和修改时间不同,虽然...太错误了......不知道 –

回答

18

的问题是,max的逻辑反是min

newest = max(glob.iglob('upload/*.log'), key=os.path.getctime) 

你的目的应该是:

newest = min(glob.iglob('upload/*.log'), key=os.path.getctime) 
+2

寻找一种方法来识别最新文件需要注意的新手因为最大getctime应该是最新的日期,因此是最新的。我发现max在AMD64和raspberry pi上给出了Linux上的最新文件。不知道这里发生了什么。 – Paul

+0

@Paul的确如此......我记得当我回答这个问题时,认为OP的方法是正确的,并且建议'min' over'max'确实是一个建议,看看他们是否想要最老的(或者只是看看他们是否是他们的对手真的很想)... –

+0

@JonClements你好我正在做类似的事情,抓住一定的文件格式,它必须是最新的,并在一个目录内。想知道是否有任何方法可以使用'os'模块而不使用'glob'? – yan

相关问题