このサイトで恥知らずに見つけたPythonコードに基づいて、ディレクトリ内の最新ファイルの日付を検索しようとしています。空のシーケンスで関数が失敗する
def newest_file_in_tree(rootfnewer, extension=".avi"):
return max(
(os.path.join(dirname, filename)
for dirname, dirnames, filenames in os.walk(rootfnewer)
for filename in filenames
if filename.endswith(extension)),
key=lambda fn: os.stat(fn).st_mtime)
これは機能しますが、空のディレクトリでは失敗します。
key=lambda fn: os.stat(fn).st_mtime)
ValueError: max() arg is an empty sequence
は、私はPythonの初心者だということを認めて、そして最後の行は、私の給与等級を超えた方法です。
どのようにエラーをトラップして機能がクラッシュするのを防ぐことができますか?
@TimPietzcker YESSS!空リストの真実性をテストする。更新しました、ありがとうございます。 –
私はこれが好きです。なぜなら、コードが不明瞭になり、何が起こっているのかがうまく明示されているからです。 –
@TimPietzcker合意。その理解からネストされたループを削除することは、(たとえPythonのほうが少ないにしても)さらに優れたソリューションです! –