2016-12-06 56 views
0

我想寫/在initial_run設置爲True腳本運行其中要在第一次循環引用,我的呼叫需要的參數的應用程序的參數。否則,該值應該保留爲假。現在該參數在配置文件中配置。如何用Python編寫布爾命令行參數?

我寫的當前代碼如下。在這段代碼中應該改變什麼來返回True值?現在它只返回值False

import sys 
# main 
param_1= sys.argv[0:] in (True, False) 
print 'initial_run=', param_1 
+4

命令行參數總是串 - 對於C程序的入口點被指定爲'INT主(INT的argc,字符* argv的)',並且'系統調用的execv'家庭接受參數爲C字符串數組。由於操作系統是如何將它們交給他們的,他們不可能在沒有被轉換,解析或鑄造的情況下變成其他任何東西。 –

+3

你可以使用argparse(http://stackoverflow.com/questions/15008758/parsing-boolean-values-with-argparse),這是標準庫的一部分。在第三方庫中點擊可以是一個不錯的選擇(http://click.pocoo.org/5/options/#boolean-flags)。 –

回答

1

在命令行運行腳本:

# ./my_script.py true 

布爾可以通過做來obtined:

import sys 

initial_run = sys.argv[1].lower() == 'true' 

這種方式,我們正在做的小寫是「真」的第一個參數的比較,比較將返回Boolean如果字符串匹配或布爾值false如果不。

0

變化

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') 
+0

'bool'不會將''True''和''False''轉換爲'True'和'False'。在一個字符串調用'bool'等同於'LEN(字符串)!= 0'。 – user2357112

+0

是的,我解決了這個問題。 –