【问题标题】:subprocess.call() in python is used for? [closed]python中的subprocess.call()是用来做什么的? [关闭]
【发布时间】:2020-03-18 03:10:40
【问题描述】:
roadSegCommand = segBin + pred_img + self.out_dir # Here we are adding 3 links
output = subprocess.call(['bash','-c', roadSegCommand])

Bash 在我的电脑上不工作,所以我使用“pip”而不是“bash”。如果我将-c 放在那里,则控制台上不会出现-c 这样的选项。因此,如果我更改为 -h 它正在工作。但我的问题是

  1. subprocess.call(["pip","-h",roadSegCommand]) 是否正确?

  2. 子进程调用和popen有什么区别。

  3. 括号中的 roadSegCommand 是否正确?

  4. 我会使用 pip 而不是 bash。它们有什么区别?

【问题讨论】:

  • 如果我们不知道您添加的子字符串包含什么内容,我们怎么能说是正确的呢?另外,请一问一答。
  • Bash 是 shell,或命令语言解释器,而 pip 是管理 Python 包的应用软件。它们不能相互替换。你在哪个平台上工作?
  • 为什么我们在python的subprocess.call()中使用“bash”和“-c”?请解释一下 subprocess.call 是做什么的?
  • 如果 bash 在您的 PC 上无法运行,那么该命令在 Python 中仍然无法运行
  • pip 也不是 bash 替代品,所以不清楚您要做什么

标签: python bash pip subprocess popen


【解决方案1】:

子进程用于运行操作系统命令

pip -h显示pip命令的帮助内容,不带参数,所以1)不,不正确

bash -c "command statement" 将运行该语句使用 bash

如果您的系统无法使用 bash,Python 和 pip 将帮助您运行 bash 命令,因此 4) 它们完全是完全独立的程序

您的所有其他问题都由子进程模块文档回答 - https://docs.python.org/3/library/subprocess.html 具体来说,您可以通过 call 进程或 open 它来获取其输出和运行状态,尽管建议使用 run()

调用子流程的推荐方法是对它可以处理的所有用例使用 run() 函数

3) 是的,你有有效的 Python 语法

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 2020-05-23
    • 2012-09-07
    • 2014-01-07
    • 2015-02-10
    • 2015-04-15
    • 2010-11-07
    • 2015-11-04
    相关资源
    最近更新 更多