我想寫/在initial_run
設置爲True
腳本運行其中要在第一次循環引用,我的呼叫需要的參數的應用程序的參數。否則,該值應該保留爲假。現在該參數在配置文件中配置。如何用Python編寫布爾命令行參數?
我寫的當前代碼如下。在這段代碼中應該改變什麼來返回True
值?現在它只返回值False
。
import sys
# main
param_1= sys.argv[0:] in (True, False)
print 'initial_run=', param_1
我想寫/在initial_run
設置爲True
腳本運行其中要在第一次循環引用,我的呼叫需要的參數的應用程序的參數。否則,該值應該保留爲假。現在該參數在配置文件中配置。如何用Python編寫布爾命令行參數?
我寫的當前代碼如下。在這段代碼中應該改變什麼來返回True
值?現在它只返回值False
。
import sys
# main
param_1= sys.argv[0:] in (True, False)
print 'initial_run=', param_1
在命令行運行腳本:
# ./my_script.py true
布爾可以通過做來obtined:
import sys
initial_run = sys.argv[1].lower() == 'true'
這種方式,我們正在做的小寫是「真」的第一個參數的比較,比較將返回Boolean如果字符串匹配或布爾值false如果不。
變化
param_1 = sys.argv[0:] in (True, False)
到:
param_1 = eval(sys.argv[1])
assert isinstance(param_1, bool), raise TypeError('param should be a bool')
'bool'不會將''True''和''False''轉換爲'True'和'False'。在一個字符串調用'bool'等同於'LEN(字符串)!= 0'。 – user2357112
是的,我解決了這個問題。 –
命令行參數總是串 - 對於C程序的入口點被指定爲'INT主(INT的argc,字符* argv的)',並且'系統調用的execv'家庭接受參數爲C字符串數組。由於操作系統是如何將它們交給他們的,他們不可能在沒有被轉換,解析或鑄造的情況下變成其他任何東西。 –
你可以使用argparse(http://stackoverflow.com/questions/15008758/parsing-boolean-values-with-argparse),這是標準庫的一部分。在第三方庫中點擊可以是一個不錯的選擇(http://click.pocoo.org/5/options/#boolean-flags)。 –