argparse

argparse命令含参数模块

 

argparse是python的一个命令行参数模块,可以解析命令行参数,生成帮助等。

 

你可以这样使用它:

 

Python代码   收藏代码
  1. #!/usr/bin/python  
  2.   
  3. from argparse import ArgumentParser  
  4.   
  5. p = ArgumentParser(usage='it is usage tip', description='this is a test')  
  6. p.add_argument('--one', default=1, type=int, help='the first argument')  
  7. p.add_argument('--two, default=2, type=int, help='the second argument')  
  8. p.add_argument('--docs-dir, default="./", help='document directory')  
  9.   
  10. args = p.parse_args()  
  11.   
  12. #可以打印出来查看  
  13. print args  
  14.   
  15. #打印某一个参数  
  16. print args.one  
  17. print args.docs_dir   #经过parse_args()函数后参数名称去掉了前面的"--",所有的"-"转换为"_"  

 

 

这个文件的名称叫做test.py , 你可以这样运行它:

                                                ./test.py

想要查看是否有哪些参数可以:

                                                ./test.py --help  或者  ./test.py -h

会打印出以下信息:

 

命令行代码   收藏代码
  1. usage: it is usage tip  
  2.   
  3. this is a test  
  4.   
  5. optional arguments:  
  6.   -h, --help  show this help message and exit  
  7.   --one ONE   the first argument  
  8.   --two TWO   the second argument  
  9.   --docs-dir DOCS_DIR   document directory  

 

 

 然后就可以带参数运行程序:

 

                                      ./test.py --one 10 --two 20 --docs-dir /opt/docs/

 

 但是在这种情况下:“如果运行程序时带了一个不认识的参数”,就会报错:

 

                                      ./test.py --p 235

 

命令行代码   收藏代码
  1. usage: it is usage tip  
  2. test.py: error: unrecognized arguments: ./test.py --p 235  

 

 

有时我们不希望这样,我们的需求是:只提取有用的参数,不认识的参数丢弃但并不需要报错".

这时程序可以这样写:

 

Python代码   收藏代码
  1. #!/usr/bin/python  
  2.   
  3. import sys  
  4. from argparse import ArgumentParser  
  5.   
  6. p = ArgumentParser(usage='it is usage tip', description='this is a test')  
  7. p.add_argument('--one', default=1, type=int, help='the first argument')  
  8. p.add_argument('--two, default=2, type=int, help='the second argument')  
  9. p.add_argument('--docs-dir, default="./", help='document directory')  
  10.   
  11. # 这个函数将认识的和不认识的参数分开放进2个变量中  
  12. args, remaining = p.parse_known_args(sys.argv)  
  13.   
  14. #可以打印出来查看  
  15. print args  
  16. print remaining  

 

 

再次运行程序:

 

                                      ./test.py --p 235

 

这个时候就会打印出:

 

命令行代码   收藏代码
  1. Namespace(docs_dir='./', one=1, two=2)  
  2. ['./test.py''--p''235']  
### Python `argparse` 使用指南与常见问题解答 #### 什么是 `argparse` `argparse` 是 Python 标准库中的模块之一,专门用于处理命令行参数和选项。通过此模块可以轻松创建用户友好的命令行界面[^1]。 #### 项目目录结构及介绍 一个典型的使用 `argparse` 的项目的目录结构如下所示: ``` project/ │ ├── main.py # 主程序入口 ├── utils/ # 辅助函数或类的存储位置 │ └── helper.py # 提供额外的功能支持 └── README.md # 描述项目基本信息和其他相关内容 ``` 其中,`main.py` 文件通常是负责接收并解析来自终端用户的输入的地方。 #### 示例代码:控制台输入的回声效果 下面是一个简单的例子来展示如何利用 `argparse` 实现基本功能——即让用户能够传递字符串给脚本执行后返回相同的内容。 ```python # echo_example.py import argparse parser = argparse.ArgumentParser(description="Echo the input string back to user.") parser.add_argument("echo", type=str, help="String value that will be echoed.") args = parser.parse_args() print(f"Echoed String: {args.echo}") ``` 当运行上面这段代码时,你可以像这样调用它: ```bash $ python echo_example.py Hello_World Echoed String: Hello_World ``` #### 处理路径拼接的小贴士 为了避免手动编写跨平台兼容性的路径连接逻辑带来的麻烦,推荐总是采用内置方法代替硬编码方式。例如,可以用 `os.path.join()` 来安全可靠地组合文件夹名与文件名[^3]: ```python import os full_path = os.path.join('parent_dir', 'child_dir', 'file.txt') print(full_path) # 输出结果取决于当前操作系统环境变量配置情况 ``` #### 关于其他语言生态系统的对比 值得注意的是,在不同的编程环境中也存在着类似的工具服务于相似的目的。比如说,在 Java 生态圈子里就有名为 **argparse4j** 的第三方库,它的设计理念很大程度受到了原生 Python 版本的影响[^4]。然而两者之间仍然存在一定差异性需要注意区分对待。 --- ### 常见新手问题及其解决办法 #### Q1. 我遇到了版本更新后的兼容性难题怎么办? A1. 如果发现某些旧有特性不再受最新发行版的支持,则建议查阅官方发布日志寻找替代方案;同时也可以考虑锁定特定依赖项防止意外变动影响既有业务逻辑正常运作[^4]。 #### Q2. 如何添加可选参数而非强制要求用户提供全部必要字段? A2. 利用 `.add_argument()` 方法里的 `--option-name` 形式的标志位声明非必需型别的条目即可达成目标。例如: ```python parser.add_argument('--verbosity', default='low', choices=['high','medium','low'], help='Set output verbosity level.') ``` #### Q3. 支持子命令该如何操作? A3. 可以借助 `.add_subparsers()` 构建分层式指令体系架构。详情参阅下方片段示范: ```python subparsers = parser.add_subparsers(dest='command') start_parser = subparsers.add_parser('start', help='Start service operation.') stop_parser = subparsers.add_parser('stop', help='Stop running instance.') args = parser.parse_args(['start']) assert args.command == 'start' ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值