如何设置python2.7 paramiko SFTP上传的条件?不恰当地使用其他工具?

如何设置python2.7 paramiko SFTP上传的条件?不恰当地使用其他工具?,python,python-2.7,sftp,paramiko,Python,Python 2.7,Sftp,Paramiko,对Python非常陌生,一般来说都是编码。 我一直在处理csv文件并将其上传到SFTP服务器。我想检查服务器上是否存在该文件。如果它确实存在,我想重命名它并将其归档到另一个文件夹,然后替换为更新的文件。如果它不存在…我只想上传文件 path2 = '/import/Test/stock_update.csv' ssh = paramiko.SSHClient() paramiko.util.log_to_file(log_file) ssh.set_missing_hos

对Python非常陌生,一般来说都是编码。 我一直在处理csv文件并将其上传到SFTP服务器。我想检查服务器上是否存在该文件。如果它确实存在,我想重命名它并将其归档到另一个文件夹,然后替换为更新的文件。如果它不存在…我只想上传文件

path2 = '/import/Test/stock_update.csv'      
ssh = paramiko.SSHClient()  
paramiko.util.log_to_file(log_file)    
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
dt = str(datetime.datetime.now())
newname = dt+'stock_update.csv'
archive = 'import/Test/Done/'+newname

ssh.connect('xxxx-mediaserverxxxxxxxxx', port=22,     username='xxxxxxxxx', password='xxxxxxxxxx') 
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('ls /tmp') 

print "output", ssh_stdout.read() #Reading output of the executed co'mmand 
error = ssh_stderr.read()  
print "err", error, len(error)  
sftp = ssh.open_sftp()   

try:
    sftp.stat(path2)
except IOError as e:
    print e.errno
    print errno.ENOENT
    if e.errno == errno.ENOENT:
        print 'this is if'
        sftp.put('C:/Test/fun/stock_update.csv','/import/Test/stock_update.csv',)

else:
    print 'this is else'
    sftp.rename('/import/Test/stock_update.csv',archive)
    sftp.put('C:/Test/fun/stock_update.csv','/import/Test/stock_update.csv',)

finally:
    sftp.close()
    ssh.close()  

我想我用错了其他的?如果不存在文件,则在SFTP服务器上创建该文件,但如果该文件存在,则不执行任何操作。单独地,代码行可以工作

我现在正在工作。以上代码已编辑以反映更改。需要对输入文件进行加载项检查。在stackoverflow上发布密码后,不要忘记更改密码。您使用的
else
是正确的。如果
e.errno!=errno.enoint
。当前,您正在静默stat引发的所有IOErrors,这些IOErrors不是“没有这样的文件或目录”。是否最好指定错误号?如果e.errno==[2]或者这一切都一样。在这种情况下,我只是检查文件是否存在,以便创建或归档旧文件并放入新文件。我不确定我是否理解我可能会用一个通用的解决方案来消除哪些其他错误,正如我所写的那样。