2017-06-28 13 views
0

現在の作業ディレクトリ内のすべてのディレクトリに最新のzipファイルがあります。 1つのフォルダに最新のファイルを見つけるこのコードはあります:pythonを使用してすべてのディレクトリで最新のファイルを取得

import glob 
import os 

list_of_files = glob.glob('/path/to/folder/*.zip') 
latest_file = max(list_of_files, key=os.path.getctime) 
print latest_file 

すべてのフォルダで最新のファイルを見つけるにはどうすればよいですか?

+0

「すべてのフォルダ」*とはどういう意味ですか?すべてのすべてのように? –

+0

例のように、5つのフォルダを持つ現在の作業ディレクトリがあり、各フォルダにはそれぞれ独自のファイルがあります。 – LearningEveryday

+0

'os.listdir'はすべてのファイルとフォルダをリストし、再帰的に呼び出すことができます – PYA

答えて

0

のPython 2.2以降:

import fnmatch 
import os 

list_of_files = [] 
for root, dirnames, filenames in os.walk('/path/to/folder'): 
    for filename in fnmatch.filter(filenames, '*.zip'): 
     matches.append(os.path.join(root, filename)) 
latest_file = max(list_of_files, key=os.path.getctime) 
print latest_file 

がそれを行うための良い方法はありますが、それは、のPython 3.5+必要があります。

import glob 

list_of_files = glob.glob('/path/to/folder/**/*.zip', recursive=True) 
latest_file = max(list_of_files, key=os.path.getctime) 
print(latest_file) 

glob.globのマニュアルを引用します:

recursiveがtrueの場合、パターン**はすべてのファイルと0個以上のディレクトリとサブディレクトリと一致します。パターンの後にos.sepが続く場合、ディレクトリとサブディレクトリのみが一致します。

+0

python 2.2+の例を実行しようとしましたが、max()argが空のシーケンスであるというエラーが出ています。 – LearningEveryday

+0

デバッグを試しましたか?あなたは上記のディレクトリにいくつかのzipファイルがあるということは肯定的ですか? –

関連する問題