8

サーバーからローカルマシンにファイルを転送するコードの価格があります。ただし、ユーザーが入力するディレクトリは常に正しいとは限りません。ユーザーが間違ったディレクトリに入ると、エラーを表示しようとしています。がなしでない場合はreturncode、エラーが表示されます。しかし、これは機能しません。プログラムが何をスローしても、それは常に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オブジェクト(この場合は結果変数)を返します。リターンコードのステータスを設定するには、このオブジェクトのpollまたはメソッドを呼び出す必要があります。wait次に、あなたはチェックすることができますresult.returncode

http://docs.python.org/2/library/subprocess.html#subprocess.Popen.returncodeを参照してください

poll()およびwait()によって(および間接的にcommunicate()によって)設定される子の戻りコード。None値は、プロセスがまだ終了していないことを示します。

于 2012-12-24T07:52:37.987 に答える