たとえば、次のようなファイルのリストがあるとします。
files = ["C:\\MyDir\\some_file.txt",
"C:\\MyDir\\another_file.txt",
"C:\\MyDir\\some_file.old"]
そして、「some」で始まる「.txt」ファイルを取り出したいと思います。標準のfnmatch.filterメソッドを使用します。
my_files = fnmatch.filter([os.path.basename(i) for i in files], "some*.txt")
["some_file.txt"]を返します。ここで、これらのファイルが実際にSFTPサイトにあり、フィルタリング後にSFTPサイトからダウンロードしたいとします。ダウンロードしたいファイルの完全なファイルパスを取得するにはどうすればよいですか?
os.path.abspath("some_file.txt")
明らかな理由で機能しません。フィルタパターンの前に別のワイルドカード( "*")を付けることもできますが、これは回避策です。これを行うためのクリーンな方法はありますか?