之前已经:
【已解决】Python文件支持运行时从命令行传入参数
但是此处使用期间,遇到问题:
1 2 3 | argParser.add_argument( "-u" , "--update-existed-md" , type = bool , default = True , help = "update existed md file modification time”) isUpdateMdWhenExist = args.update_existed_md |
传入:
1 2 3 | python common /tools/generate_md_from_summary .py -u false -f /Users/xxx/dev/crifan/gitbook/gitbook_template/books/linux_usage_dev_summary/src/SUMMARY .md python common /tools/generate_md_from_summary .py -u False -f /Users/xxx/dev/crifan/gitbook/gitbook_template/books/linux_usage_dev_summary/src/SUMMARY .md |
结果:
isUpdateMdWhenExist始终都是True:
1 | isUpdateMdWhenExist=True |
python argparse bool always true
去看官网的store_true
“* ‘store_true’ and ‘store_false’ – These are special cases of ‘store_const’ used for storing the values True and False respectively. In addition, they create default values of False and True respectively. For example:
>>>
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument(‘–foo’, action=’store_true’)
>>> parser.add_argument(‘–bar’, action=’store_false’)
>>> parser.add_argument(‘–baz’, action=’store_false’)
>>> parser.parse_args(‘–foo –bar’.split())
Namespace(foo=True, bar=False, baz=True)”
基本搞懂了:
对于bool参数,应该用:
1 |
或:
1 2 | --xxx --xxx-yyy |
如果加了此参数,则
- 代码中store_true -》 传入了True
- 代码中store_false -》 传入了False
所以此处可以去写成:
1 2 | argParser.add_argument( "--disable-update-existed-md" , action= 'store_false' , help= "disable update existed md file modification time. if not pass, default to True" ) argParser.add_argument( "--enable-use-random-time" , action= 'store_true' , help= "enable use random time for update time. if not pass, default to False" ) |
调用:
两个都不传
1 | python common /tools/generate_md_from_summary .py -f /Users/xxx/dev/crifan/gitbook/gitbook_template/books/linux_usage_dev_summary/src/SUMMARY .md |
输出:
1 2 | args.disable_update_existed_md = True isRandomUpdateTime = False |
设置其中一个:
1 | python generate_md_from_summary.py --disable-update-existed-md -f /Users/xxx/dev/crifan/gitbook/gitbook_template/books/linux_usage_dev_summary/src/SUMMARY .md |
输出:
1 2 | args.disable_update_existed_md = False isRandomUpdateTime = False |
2个都传入:
1 | python generate_md_from_summary.py --disable-update-existed-md -- enable -use-random- time -f /Users/xxx/dev/crifan/gitbook/gitbook_template/books/linux_usage_dev_summary/src/SUMMARY .md |
输出:
1 2 | args.disable_update_existed_md = False isRandomUpdateTime = True |
后来,改为:
1 2 | argParser.add_argument( "--disable-update-existed-md" , action= 'store_true' , help= "disable update existed md file modification time" ) argParser.add_argument( "--enable-use-random-time" , action= 'store_false' , help= "enable use random time for update time" ) |
然后默认不传入这2个参数:
1 | ython generate_md_from_summary.py -f /Users/xxx/dev/crifan/gitbook/gitbook_template/books/linux_usage_dev_summary/src/SUMMARY .md |
就是我要的效果了。
附带help的信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | python generate_md_from_summary.py --help usage: generate_md_from_summary.py [-h] -f MD_FILE [--disable-update-existed-md] [--enable-use-random-time] [-r RANDOM_RANGE] optional arguments: -h, --help show this help message and exit -f MD_FILE, --md-file MD_FILE full path of entry SUMMARY.md file --disable-update-existed-md disable update existed md file modification time. if not pass, default to True --enable-use-random-time enable use random time for update time. if not pass, default to False -r RANDOM_RANGE, --random-range RANDOM_RANGE for random time, the range. in seconds. default 600 = 10 minutes |
供参考。