爲什麼我的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