2016-10-12 12 views
0

我想从python中的特定目录获取最新文件的名称?在linux中获取最新文件的名称 - PYTHON

我用这个

import os 
import glob 

def get_latest_file(path, *paths): 
    """Returns the name of the latest (most recent) file 
    of the joined path(s)""" 
    fullpath = os.path.join(path, *paths) 
    print fullpath 
    list_of_files = glob.glob(fullpath) 
    if not list_of_files:    
     return None      
    latest_file = max(list_of_files, key=os.path.getctime) 
    _, filename = os.path.split(latest_file) 
    return filename 


if __name__ == "__main__": 
    print get_latest_file('ocr', 'uploads', '*.png') 

Source

但我想代码,而无需指定文件的扩展名的最新文件的名称恢复。 让我们来说说如果有jpg,jpeg,png,gif

我想要这些代码片段来覆盖它们。

任何输入?

+1

与glob.glob你也可以替换文件结尾后缀。你试过了:print get_latest_file('ocr','uploads','*') – hasan

+0

@hasan这就是答案。你想更清楚地写下来吗? – bbastu

回答

2

与最后一行你只是检索与如果你想获取不依赖于扩展名的文件扩展名png格式

get_latest_file('ocr', 'uploads', '*.png') 

的文件,你只需要删除您的扩展规范的代码glob的。 glob('')。这将检索您的目录中的所有文件。如果你仍然需要任何扩展名,但是不用担心你可以用glob.glob检索它们(。*),我想。

0

如果你不关心扩展,一个简单的os.walk迭代就可以完成。如果需要,可以将其扩展为过滤器扩展。

import os 

all_files = {} 
root = 'C:\workspace\werkzeug-master' 
for r, d, files in os.walk(root): 
    for f in files: 
     fp = os.path.join(root, r, f) 
     all_files[os.path.getmtime(fp)] = fp 
keys = all_files.keys() 
keys.sort(reverse = True) 
print all_files[keys[0]]