代码之家  ›  专栏  ›  技术社区  ›  Nick Bastin

如何在subprocess.Popen中设置shell变量(以一种不那么难看的方式…)

  •  0
  • Nick Bastin  · 技术社区  · 16 年前

    问题与 Python: Persistent shell variables in subprocess ,因为这个问题实际上是关于环境变量,而不是shell变量。

    我正在尝试自动化一个基本的基准测试,我正在csh中使用内置的shell time 指挥部。您可以调整的输出 时间 通过在shell中设置相同名称的变量,如下所示:

    set time=(1000000000 "%U %S %E %P %W %X %D %K %M %F %R %I %O %r %s %k %w %c")
    

    env 中的参数 subprocess.Popen 构造器(我先试过…)。你 通过滥用(依我看,无论如何) cmd

    time_cmd = 'set time=(1000000000 "%U %S %E %P %c"); time ./some_func'
    p = subprocess.Popen(cmd, executable="/bin/csh", shell=True, ...)
    

    指令 当您想要调整一系列不同的shell行为时,可以进行构造)。

    subprocess 除了这堆乱七八糟的东西?

    1 回复  |  直到 9 年前
        1
  •  1
  •   p00ya    16 年前

    与子进程通信的选项数量有限(调用参数、环境和流)。由于设置shell变量在更一般的意义上是修改子进程的内部状态,所以您所谓的“kludge”实际上是相当合理的。我不知道有哪种csh变体具有加载shell变量的特殊方式。

    source