为什么我的Python解释器的os.system('command')与终端的命令没有相同的输出?os.system与命令行有什么不同?
问连忙解释道:
我
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解释器中获得$ 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')与终端的命令没有相同的输出?
在任何默认shell中运行该命令,然后您将获得环境。所以:'os.system(“”“/ usr/bin/bash -c python3 -c'import os; print(os.environ [”CONFPATH“]'”“”)' - 可能没有引用那个对或得到正确的路径bash,但希望你能得到想法 – barny
我明白了,但是我之前没有用过这个和'os.system(“”“/ bin/bash -c python3 -c'import os; print(os .environ [“CONFPATH”]'“”“)'开始一个dos似乎没有结束的进程,就像它被卡住了一样。也许我做错了吗? – Ashargin
”执行它从我的python解释器不起作用Pyzo4.4.1)“我认为Pyzo解释器运行在不同的环境中,具有不同的环境变量,它是否在标准解释器中工作? – Goyo