使用子进程模块和curl命令

时间:2015-08-16 18:13:28

标签: python curl subprocess

我在使用带有curl命令的子进程模块时收到错误: function'对象是unsubscriptable

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).

有人可以指出问题吗?

1 个答案:

答案 0 :(得分:3)

你遗忘了check_call的parens:

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,您还需要传递一个args列表:

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

无论哪种方式将check_call传递给Popen都不是要走的路