2013-06-18 36 views
0

我正在运行Debian 6与Python版本2.6挤压。我有两个子代码是这样的:如何使用Popen而不是check_call?

rsync_out = subprocess.Popen(['sshpass', '-p', password, 'rsync', '--recursive', source], 
        stdout=subprocess.PIPE) 
command = subprocess.check_call(('grep', '\.'), stdin=rsync_out.stdout) 

据工作正是我想要的,但没有可用于Python 2.6 check_call的方式。如何用subprocess.Popen调用第二个命令?

试过这样,但没有奏效:

command = subprocess.Popen(['grep', '\.'], stdin=rsync_out.stdout).communicate()[0] 

我得到这个错误:

'NoneType' object has no attribute 'split' 

回答

0

我想你正试图获得第二个命令的返回码?试试这个:

rsync_out = subprocess.Popen(['sshpass', '-p', password, 'rsync', '--recursive', source], 
       stdout=subprocess.PIPE) 
command = subprocess.Popen(['grep', '\.'], stdin=rsync_out.stdout) 
command.communicate() 
returnCode = command.returncode 
+0

“海峡”对象有没有属性“标准输出” – pynovice

+0

你不介意在这里粘贴完整的堆栈跟踪? – yanhan

+0

回溯(最近呼叫最后): 文件“”,第1行,在 AttributeError:'元组'对象没有属性'返回码' – pynovice

相关问题