所以我有了太多的這些在它簡單的方法來編寫Python控制檯程序(做ARGS存在)
try:
if argv[4]:
n = argv[4]
except IndexError, e:
n = raw_input("Enter n: ")
有一些更簡單的方法來做到這一點一些代碼?
基本上是一個更好的方法來檢查輸入存在,然後如果它不採取相應的行動。
感謝
所以我有了太多的這些在它簡單的方法來編寫Python控制檯程序(做ARGS存在)
try:
if argv[4]:
n = argv[4]
except IndexError, e:
n = raw_input("Enter n: ")
有一些更簡單的方法來做到這一點一些代碼?
基本上是一個更好的方法來檢查輸入存在,然後如果它不採取相應的行動。
感謝
看一看的argparse
模塊(其中做了很多比顯示更多在這裏):
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
您可以使用len()
得到一個序列的長度如sys.argv
。
你可以定義一個包裝函數。
根據你的命令行參數的複雜性和你的Python版本使用,你可以嘗試argparse模塊(Python 2.7中可用)。
說明在Python文檔:
的argparse模塊可以很容易地編寫用戶友好的命令行界面。該程序定義了它需要的參數,argparse將找出如何解析sys.argv中的那些參數。 argparse模塊還會自動生成幫助和用法消息,並在用戶給出程序無效參數時發出錯誤。
我使用plac庫 - 這對我來說是最簡單的方法。你只需要定義一個函數的一些參數:
import plac
def main(arg1, arg2, arg3=None, arg4='default value'):
print locals()
if __name__ == '__main__':
plac.call(main)
而磨片,你打電話給你的腳本是這樣的:
$ python my_console_program.py 111 222
你得到命令行參數作爲函數的參數:
{'arg1': '111', 'arg2': '222', 'arg3': None, 'arg4': 'default value'}
您可以輕鬆處理默認和必需的參數,選項等。
併爲較早版本的Python選擇optparse。 – 2011-02-17 04:31:38