gpt4 book ai didi

Python 采购 CSH 并将 setenv 传递给新的子进程

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:22 34 4
gpt4 key购买 nike

我目前正在尝试使用 python 为我的团队编写一些组件测试,我遇到了一个测试程序,该程序告诉测试人员获取一个 csh 文件。这个文件有一堆 setenv 命令和别名。链中的下一个可执行文件需要所有这些环境变量。我想设计一些方法来提取所有环境变量并将它们传递给链中的下一个进程。

我看了下面的问题,这几乎是我需要的: Emulating Bash 'source' in Python

它将所有导出的 bash 环境变量推送到一个字典中,然后我可以将其传递给下一个进程。问题是这似乎只适用于 export 而不是 csh setenv 命令。

如果这不可能,是否有办法使用子进程命令运行 .csh 文件,例如 /bin/sh -c script.csh 然后运行需要这些的进程环境变量作为该进程的子进程(以便它可以继承它的环境变量?)

本质上,我有一个包含大量 setenv 变量的进程和脚本,并且该进程需要在包含所有这些环境变量的环境中运行。

感谢您的帮助,

最佳答案

你有没有考虑过John Kugelman's solution ?那将是最简单的方法。

但是,如果出于某种原因您需要或希望 Python 成为这些脚本之间的中介,那么您可以使用以下代码获取脚本并检索环境变量。 (编辑:感谢 abarnert 和 Keith Thompson 提供正确的 csh 命令。)

如果script.csh包含

setenv foo bar

然后

import subprocess
import os
import json
PIPE = subprocess.PIPE
output = subprocess.check_output(
'''source script.csh; python -c "import os, json; print(json.dumps(dict(os.environ)))"''',
shell=True, executable='/bin/csh')
env = json.loads(output)
print(env['foo'])

产量

bar

关于Python 采购 CSH 并将 setenv 传递给新的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16744334/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com