2015-08-16 17 views
0

我收到錯誤:當使用curl命令使用子流程模塊時,函數'object is unsubscriptable使用帶有curl命令的子流程模塊

cmd (subprocess.check_call ['curl -X POST -u "opt:gggguywqydfydwfh" ' + Url + 'job/%s/%s/promotion/' % (job, Num)]). 

我打電話給這個使用函數。

def cmd(sh): 
    proc = subprocess.Popen(sh, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE). 

任何人都可以指出問題嗎?

+0

方式拋棄到'curl'而不是像'requests'這樣的庫可能被認爲是問題。 – chepner

回答

3

你忘了括號與check_call

subprocess.check_call(["curl", "-X", "POST", "-u", "opt:gggguywqydfydwfh",Url + 'job/%s/%s/promotion/' % (job, Num)]) 

您正在嘗試subprocess.check_call[...

你也把它傳遞給你的函數,check_call返回退出代碼,這樣你就試圖通過0到您的Popen呼叫爲sh這將失敗。

如果你真的想要的輸出,忘記了功能和使用check_output,你還需要通過參數的個數列表:

out = subprocess.check_output(["curl", "-X", "POST", "-u", "opt:gggguywqydfydwfh", Url + 'job/%s/%s/promotion/' % (job, Num)]) 

無論哪種方式傳遞check_call到POPEN是不是要走

+1

另外,您應該將命令參數指定爲單獨的列表元素:'['curl','-X','POST',...]'。 – augurar

+1

錯字:subprocess.check_ *輸出* –

+0

@BenBeirutm是的,固定,歡呼聲。 –