2017-04-12 81 views
0

是否可以告訴python解釋器使用特定的命令行開關來運行我的腳本。告訴python解釋器在腳本本身中使用解釋器命令行開關

例如,

如果啓用了文檔測試,我想補充

if __name__ == '__main__': 
    import doctest 
    doctest.testmod() 

創建一個自包含的測試運行。

然而,這需要我添加-v交換機,來運行該腳本:

python myscript -v 

這並不總是很方便像崇高的編輯器,編譯系統默認爲無開關。我知道我可以創建一個自定義構建器,但與指定用於某些腳本的交換機相比,這並不理想。

是否有可能,如果是的話,怎麼樣?

UPDATE

下面有人指出,文檔測試本案涉及一個腳本標記,而不是一個解釋器開關。但我真的很想知道這兩種情況。

雖然testmod(verbose=True)可以解決這個特殊情況,我仍然對原來的問題感興趣。

+0

您是在Windows或Linux上 – chbchb55

+0

@ chbchb55 macOS – kakyo

+1

注意:解釋器本身的標誌與腳本的標誌不同。運行'python myscript -v'會將'-v'標誌傳遞給腳本,而'python -v myscript'會導致Python將'-v'解釋爲解釋器本身的標誌。 – user2357112

回答

0

我有點得到我想要的。在與bash shell的系統,我可以簡單地添加以下到我的腳本的頂部

#! /usr/local/bin/python3 -m doctest -v 

然後

chmod +x myscript.py 

不知道怎麼做,與Windows(也許等待Win10的Linux子系統),但幸運的是我主要在macOS上工作。

這也適用於其他命令行開關。

1

通行證verbose=Truedoctest.testmod

if __name__ == '__main__': 
    import doctest 
    doctest.testmod(verbose=True) 

用命令行標誌梅辛是錯誤的路要走。

+0

謝謝。如果我的標題關注無法實現,那麼我會將你的標記標記爲正確。 – kakyo

0

你可以考慮使用環境變量。 例如,

# from the command line 
export VERBOSE_MODE=True 

# in the Python code 
import os 
verbose_mode = os.environ.get('VERBOSE_MODE', False) 

你可以有這是一個回退機制如果不提供命令行上的標誌。