Vérifiez si un chemin existe sur un hôte distant en utilisant paramiko
Question
SFTPClient apparemment ne dispose pas d'un exists
méthode. Ceci est mon implémentation actuelle:
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
Y at-il une meilleure façon de le faire? Vérification de la sous-chaîne dans les messages d'exception est assez laid et peut être peu fiable.
La solution
Autres conseils
Il n'y a pas « existe » méthode définie pour SFTP (non seulement paramiko), de sorte que votre méthode est très bien.
Je pense que la vérification de la errno est un peu plus propre:
def rexists(sftp, path):
"""os.path.exists for paramiko's SCP object
"""
try:
sftp.stat(path)
except IOError, e:
if e[0] == 2:
return False
raise
else:
return True
Paramiko soulève littéralement FileNotFoundError
def sftp_exists(sftp, path):
try:
sftp.stat(path)
return True
except FileNotFoundError:
return False
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow