8

我有一个将文件从服务器传输到本地机器的代码价格。但是,用户输入的目录可能并不总是正确的。如果用户输入了错误的目录,我试图显示错误。如果returncode不是 None 我将显示错误。但这不起作用。无论程序抛出什么,它总是会else分开。

#!/usr/bin/python

import subprocess



result = subprocess.Popen(['sshpass', '-p', 'password', 'rsync', '-avz', '--info=progress2', 'username@host_name:/file_name', '/home/zurelsoft/test'], 
                                    stdout=subprocess.PIPE)

if result.returncode != None:
    print "Directory Incorrect"

else:
    print "Done"
    print result
4

1 回答 1

14

subprocess.Popen返回一个对象(在您的情况下为结果变量)。您需要调用该对象的pollwait方法来设置返回码状态。然后你可以检查result.returncode

请参阅http://docs.python.org/2/library/subprocess.html#subprocess.Popen.returncode

子返回码,由 poll() 和 wait() 设置(间接由communicate() 设置)。None 值表示该进程尚未终止。

于 2012-12-24T07:52:37.987 回答