[英]How to call parse_args() twice on the same set of arguments in Python's argparse?
[英]How to access argparse parse_args from another function
我有以下腳本:
#!/usr/bin/env python
import argparse
args = {}
def do_something():
print 'from do_something ', args
def my_parse_args():
parser = argparse.ArgumentParser(description='A demo script')
parser.add_argument('arg1', help='an arg')
args = vars(parser.parse_args())
print 'from my_parse_args ', args
if __name__=="__main__":
my_parse_args()
do_something()
我正在嘗試從do_something()函數訪問args。 但是,我得到以下信息:
python demo.py example
from my_parse_args {'arg1': 'example'}
from do_something {}
為什么在my_parse_args()函數中未設置args詞典?
您將從函數返回解析結果,因此可以將其傳遞給其他函數:
def do_something(args):
print 'from do_something ', args
def my_parse_args():
parser = argparse.ArgumentParser(description='A demo script')
parser.add_argument('arg1', help='an arg')
return vars(parser.parse_args())
if __name__=="__main__":
args = my_parse_args()
do_something(args)
通常,您會選擇do_something()
所需的參數並傳遞給它。 這樣do_something()
函數也可以被其他代碼使用:
def do_something(foo):
print 'from do_something', foo
和
if __name__=="__main__":
args = my_parse_args()
do_something(args['arg1'])
這里do_something()
由命令行參數arg1
值驅動,但是do_something()
本身不必知道如何獲取該值。 您也可以從配置文件或數據庫中加載該程序,也可以在程序啟動后從帶有提示的直接用戶輸入中加載它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.