2016-10-12 17 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(。*)でそれらを取り出すことができるかどうかは関係ありません。

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]]  
関連する問題