2013-01-06 43 views
0

我試圖運行:錯誤運行在Python子()調用時

try: 
    with open(subprocess.PIPE, 'w') as pipe: 
      call(["/usr/sbin/atms","-k"], stdout=pipe, stderr=pipe)           
      call(["/usr/sbin/atms","/usr/sbin/atms.conf"],stdout=pipe,stder=pipe) 
except Exception, e: 
      print e 

我現在得到

coercing to Unicode: need string or buffer, int found 

是什麼意思?

感謝

+1

沒有必要使用'os.devnull'重定向標準輸出或犯錯。只需使用'subprocess.PIPE'並忽略輸出。 –

+0

好吧..試試吧..它的意思是將代碼中的行替換爲subprocess.PIPE而不是os.devnull? –

+0

正;如果你可以管道和忽略,不需要重定向到'/ dev/null'。我並不是說這會解決你的問題,只是使用'/ dev/null'是一個shell解決方案,這就是Python。 –

回答

0

open()用於文件,並期望一個文件名不是一個菸斗。

相反的.call(),你可以使用Popen

>>> p = subprocess.Popen(['python', '-c', 'print "test"'], stdout=subprocess.PIPE) 
>>> p.stdout.read() 
'test\r\n'