Paramiko's SFTPClient apparently does not have an exists method. This is my current implementation:
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
Is there a better way to do this? Checking for substring in Exception messages is pretty ugly and can be unreliable.
See the errno module for constants defining all those error codes.  Also, it's a bit clearer to use the errno attribute of the exception than the expansion of the __init__ args, so I'd do this:
except IOError, e: # or "as" if you're using Python 3.0
  if e.errno == errno.ENOENT:
    ...
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With