【问题标题】:How can I execute two commands in terminal using Python's subprocess module?如何使用 Python 的 subprocess 模块在终端中执行两个命令?
【发布时间】:2019-07-05 01:57:16
【问题描述】:

如何使用子进程模块(即callcheck_callPopen)运行多个命令?

例如,假设我想快速连续执行两次ls 命令,以下语法不起作用

import subprocess
subprocess.check_call(['ls', 'ls'])

返回:

CalledProcessError: Command '['ls', 'ls']' returned non-zero exit status 2.

【问题讨论】:

  • for _ in range(2): subprocess.Popen('ls') 不适用于您的解决方案吗?

标签: python linux subprocess popen


【解决方案1】:

您可以使用&&;

$ ls && ls
file.txt file2.txt
file.txt file2.txt

$ ls; ls
file.txt file2.txt
file.txt file2.txt

不同之处在于,在&& 的情况下,第二个命令将仅在第一个命令成功时执行(尝试false && ls),而; 在这种情况下,该命令将独立于第一个执行执行.

因此,Python 代码将是:

import subprocess
subprocess.run(["ls; ls"], shell=True)

【讨论】:

    【解决方案2】:

    只需执行两次命令。

    import subprocess
    subprocess.check_call(['ls'])
    subprocess.check_call(['ls'])
    

    应该够快了。

    编辑

    如果您想在同一个 shell 中执行两个命令,请编写一个执行它们的 shell 脚本并从 Python 运行此脚本。

    【讨论】:

    • 恐怕我的问题是对更复杂问题的简化。实际上,我确实需要在同一个 shell 中一个接一个地执行两个命令。不过感谢您的回复。
    【解决方案3】:

    下面的代码可以工作。但是 ls 命令执行两次不是更好吗?

    import subprocess
    subprocess.Popen(["ls;ls"],shell=True)
    

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 2018-02-12
      • 2013-08-25
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      相关资源
      最近更新 更多