为什么我的 python 解释器中的 os.system('command') 的输出与终端中的命令不同?
问题解释得很快:
我有
echo $CONFPATH
/home/claramart/Datamart/Parameter
但
os.system('echo $CONFPATH')
0
这是为什么?
详细信息: 我想获得我的环境 $CONFPATH。我正在使用 python3.5 和 ubuntu16.04.2。
我可以从命令行执行此操作:
echo $CONFPATH
/home/claramart/Datamart/Parameter
这就是我想要的答案。
从命令行将其作为 python 命令执行也可以:
python3 -c 'import os; print(os.environ["CONFPATH"])'
/home/claramart/Datamart/Parameter
问题是,我想从我的 python 解释器而不是从命令行执行它。从我的 python 解释器执行它不起作用(我使用的是 Pyzo4.4.1):
print(os.environ["CONFPATH"])
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python3.5/os.py", line 725, in __getitem__
raise KeyError(key) from None
KeyError: 'CONFPATH'
我想这完全来自我的解释器,而不是 python 本身,因为从命令行执行 python 是有效的。此外,我可以从我的 python 解释器中获取 $PYTHONPATH ,所以我猜它根本没有检测到所有环境变量。
为了避免这种情况并从命令行执行它,我想从我的 python 解释器执行命令行,但是我的 2 个命令行执行都没有按照我想要的方式工作:
os.system('echo $CONFPATH')
0
和 :
os.system("""python3 -c 'import os; print(os.environ["CONFPATH"]'""")
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.5/os.py", line 725, in __getitem__
raise KeyError(key) from None
KeyError: 'CONFPATH'
256
再一次,在这两种情况下,它都适用于 $PYTHONPATH,所以我想它必须在某个时候通过我的解释器,因为我的问题是特定于该变量 $CONFPATH。
为什么我的 python 解释器中的 os.system('command') 的输出与终端中的命令不同?