希望するプレフィックスに一致するファイルをフィルタリングし、並べ替えます。
>>> files = """ERROR_AM_INMAG_Export_2016-07-25.csv
... AM_INMAG_Export_2016-07-26_done.csv
... ERROR_AM_INMAG_Export_2016-07-27.csv
... AM_INMAG_Export_2016-07-28_done.csv
... AM_INMAG_Export_2016-07-29.csv
... file1
... file2
... fileN""".split('\n')
>>> files
['ERROR_AM_INMAG_Export_2016-07-25.csv', 'AM_INMAG_Export_2016-07-26_done.csv ', 'ERROR_AM_INMAG_Export_2016-07-27.csv', 'AM_INMAG_Export_2016-07-28_done.csv ', 'AM_INMAG_Export_2016-07-29.csv', 'file1', 'file2', 'fileN']
>>> filtered_files = [ x for x in files if x.startswith('AM_INMAG_Export_')]
>>> sorted_files = sorted(filtered_files,reverse=True)
>>> sorted_files[0]
'AM_INMAG_Export_2016-07-29.csv'
更新
フィルターファイル名の正規表現で、次いでソート。ファイルを取得し、最も古いファイルへの最も初期からのファイル名をソートする
>>> import re
>>>
>>> files = [
... 'ERROR_AM_INMAG_Export_2016-07-25.csv',
... 'AM_INMAG_Export_2016-07-26_done.csv',
... 'ERROR_AM_INMAG_Export_2016-07-27.csv',
... 'AM_INMAG_Export_2016-07-28_done.csv',
... 'AM_INMAG_Export_2016-07-21.csv',
... 'AM_INMAG_Export_2016-07-25.csv',
... 'AM_INMAG_Export_2016-07-29.csv',
... 'file1',
... 'file2',
... 'fileN'
... ]
>>>
>>> file_re = re.compile(r'^AM_INMAG_Export_\d{4}-\d{2}-\d{2}.csv$')
>>> filtered_files = [ x for x in files if file_re.match(x)]
>>> sorted_files = sorted(filtered_files,reverse=True)
>>> sorted_files[0]
'AM_INMAG_Export_2016-07-29.csv'
"AM_INMAG_Export_2016-07-29.csv"ファイルが存在しない場合、 "AM_INMAG_Export_2016-07-28_done.csv"を与えてはいけません。 –
@ThejeshPR:オリジナルの質問はこの区別をしません。 '' AM_INMAG_Export_ "で始まるファイルを取得すると言うだけです。 – MattH
はい、そうです.x.endswith( '_ done.csv')ではなく、x.startswith( 'AM_INMAG_Export_')を使って実行できます。 –