ParamikoのSFTPClientを使用してリモートホスト上にパスが存在するかどうかを確認するには、明らかにexists
メソッドがありません。これは私の現在の実装です:paramiko
def rexists(sftp, path):
"""os.path.exists for paramiko's SCP object
"""
try:
sftp.stat(path)
except IOError, e:
if 'No such file' in str(e):
return False
raise
else:
return True
もっと良い方法がありますか?例外メッセージの部分文字列をチェックするのはかなり醜いので、信頼できない場合があります。
これはおそらく行うには正しい方法ですので、STAT()以外にParamikoを介してSFTPサーバー上の既存のファイルは、この特定の例外をerrno.ENOENTエラーコードで発生させます:https://github.com/paramiko/paramiko/blob/master/paramiko/sftp_client.py#L722 – Devy