Python程序如何確定它是否作爲Unix系統上的可執行文件執行,而不是作爲腳本調用?區分腳本何時直接運行或與Python可執行文件
./program.py
代替
python ./program.py
在
sys.argv[0]
'/程序' 不能在示例情況之間進行區分。
Python程序如何確定它是否作爲Unix系統上的可執行文件執行,而不是作爲腳本調用?區分腳本何時直接運行或與Python可執行文件
./program.py
代替
python ./program.py
在
sys.argv[0]
'/程序' 不能在示例情況之間進行區分。
一種略爲hackish的解決方案將在被program.py
增加指示這shebang行環境變量:
#!/usr/bin/env noscript=True python
import os
if os.getenv('noscript'):
print("called as executable")
else:
print("called as script")
真的是沒有區別。如果你設置了可執行文件位,那麼os最終會完成你在命令行上的操作 - 它確實是python script.py
。唯一的區別是,os看着從#!
開始的第一行,以精確確定要運行的python版本。
我不相信這是可能的。 Unix並沒有區分這兩種情況,當shell遇到'#!/ usr/bin/env python' shebang行時,它只會執行'python program.py'。 – millimoose 2013-03-02 00:10:04
這些知識會解決什麼類型的問題?你真的想完成什麼? – 2013-03-02 00:25:36