【问题标题】:Python create shell for several processesPython为多个进程创建shell
【发布时间】:2015-12-31 12:14:41
【问题描述】:

我在 Windows 上使用 subprocess.call() 在 python 中执行了几个命令,但是对于每个命令,我需要在调用正确的命令之前使用环境设置执行批处理文件,它看起来像这样

subprocess.call(precommand + command)

有没有办法在 python 中“创建”shell,只执行一次批处理文件,并且在该 shell 命令中执行多次?

【问题讨论】:

    标签: python shell subprocess call


    【解决方案1】:
    1. 将命令写入 bat 文件 (tempfile.NamedTemporaryFile())
    2. 运行 bat 文件 (subprocess.check_call(bat_file.name))

    (未测试):

    #!/usr/bin/env python
    from __future__ import print_function
    import os
    import subprocess
    import tempfile
    
    with tempfile.NamedTemporaryFile('w', suffix='.bat', delete=False) as bat_file:
        print(precommand, file=bat_file)
        print(command, file=bat_file)
    rc = subprocess.call(bat_file.name)
    os.remove(bat_file.name)
    if rc != 0:
        raise subprocess.CalledProcessError(rc, bat_file.name)
    

    【讨论】:

      【解决方案2】:

      您需要分别获取每个命令的输出吗?如果否 - 您可以使用 &&、|| 传达这些命令或;

      cd dir && cp test1 test2 && cd -
      

      【讨论】:

      • 还有一个问题是这些命令很长,所以只有10%的命令可以执行,因为命令太长了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 2023-03-15
      • 2013-12-24
      • 2020-11-29
      • 2014-05-11
      • 2015-02-22
      相关资源
      最近更新 更多