【问题标题】:Using subprocess module with curl command使用带有 curl 命令的子进程模块
【发布时间】:2015-08-16 18:13:27
【问题描述】:

我收到错误:function' object is unsubscriptable 当使用带有 curl 命令的 subprocess 模块时。

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

谁能指出问题所在?

【问题讨论】:

  • 脱壳到curl而不是使用像requests这样的库可能被认为是问题。

标签: python curl subprocess


【解决方案1】:

你忘记了check_call 的括号:

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

你正在尝试subprocess.check_call[...

您还将它传递给您的函数,check_call 返回退出代码,因此您尝试将 0 作为 sh 传递给您的 Popen 调用,这将失败。

如果你真的想要输出,忘记函数并使用check_output,你还需要传递一个args列表:

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

无论哪种方式将 check_call 传递给 Popen 都不是可行的方法

【讨论】:

  • 另外,您应该将命令参数指定为单独的列表元素:['curl', '-X', 'POST', ... ]
  • 错字:subprocess.check_输出
  • @augurar,是的,没有意识到他们不是。
猜你喜欢
  • 2016-03-16
  • 1970-01-01
  • 2010-11-14
  • 2021-02-23
  • 2011-10-30
  • 2011-12-05
  • 2022-10-07
相关资源
最近更新 更多