d3p*_*3pd 2 python variables bash subprocess
我可以subprocess-handled使用如下查询来确定 Python 中终端的宽度:
int(subprocess.Popen(['tput', 'cols'], stdout = subprocess.PIPE).communicate()[0].strip('\n'))
Run Code Online (Sandbox Code Playgroud)
如何以类似的方式确定 Bash 用户名?那么,如何${USER}使用子进程查看Python 中的值呢?
正如 Wooble 和 dano 所说,不要为此使用子流程。使用os.getenv("USER")或os.environ["USER"]。
如果您真的想使用subprocess那么Popen(['bash', '-c', 'echo "$USER"'], ...)似乎可以正常工作,Popen("echo $USER", shell=True)尽管这两者都不是特别令人愉快(尽管在正在执行的命令行上使用环境变量必须涉及 shell,因此您无法真正避免它)。
编辑:我之前的子流程建议似乎没有正常工作。我相信我最初的测试是有缺陷的。