python 命令行解析模块_【Python模块】命令行解析--argparse
python命令行解析
前言
当你还在使用
if len(sys.argv) > 1:
这样的方式判断选项和参数的时候,是否已意识到已经落伍了。
我在bash中用过getopt getopts,我用完之后,就再也不记得他们,需要的时候又抄袭过来。
在perl中有好很多的模块GetOpt::Std,GetOpt::Long
python也有getopt的模块,按照c的风格使用。
我们跳过这里,直接进入更强大的阶段optparse,一种更友好的面向对象的方式,至少不需要getopt之后,进行一系列的if elif的判断。
随着模块的发展,最终argparse替换了它,详细原因可以参考PEP0389
学习
过一下手册,HOWTO,最终自己练习一下,来记住这个模块。
HOWTO比较简单,掌握了基本的用法。还有一些参数太多,不太常用的,可以慢慢摸索。看一下标准库第一个例子,查询一下里面几个参数。
练习
写一个自己的需求的程序,比较简单
需要
选项
-s 或者–safe 不带参数,变量为true或false;判断是否执行删除操作
-o 或者–output 参数为可写文件,如果没有参数,就默认生成一个tmp目录下的文件
参数
dir , 表示一个目录,缺省值为当前目录 .
import argparse
parser = argparse.Argumentparser(description="This is a de-duplicate tool")
parser.add_argument("dir",default=".",
help="target directory")
parser.add_argument("-s","--safe","--scan",
action="store_true",dest="not_delete",
help="scan directory only ,don't delete file")
parser.add_argument("-o","--output",type=FileType("w"),
default=generate_tmp())
args = parser.parse_args()
print "Dir:{}".format(args.dir)
if args.not_delete:
print "we are in safe mode."
print "output file:%s".format(args.output.name)
在txt上写好了
1.发现Argumentparser这个拼写错了,这个居然是驼峰的风格。
2.发现python 有生成零时文件的函数。
3.FileType这个是argparse里的方法
fix it
import argparse
import os
parser = argparse.ArgumentParser(description="This is a de-duplicate tool")
parser.add_argument("dir",default=".",
help="target directory")
parser.add_argument("-s","--safe","--scan",
action="store_true",dest="not_delete",
help="scan directory only ,don't delete file")
parser.add_argument("-o","--output",type=argparse.FileType("w"),
default=os.tmpfile())
args = parser.parse_args()
print "Dir:{}".format(args.dir)
if args.not_delete:
print "we are in safe mode."
print "output file:%s".format(args.output.name)
发现os.tmpfile不会返回路径,文件描述符消失时,自动删除文件
重找 tempfile 模块,这个模块居然也有坑,不是一个文件描述符,是操作系统描述符。好大一个坑
可以-o的默认参数改成None,做一些处理,获得需要的文件路径和文件描述符,形成统一。
import argparse
import os
import tempfile
parser = argparse.ArgumentParser(description="This is a de-duplicate tool")
parser.add_argument("dir",default=".",
help="target directory")
parser.add_argument("-s","--safe","--scan",
action="store_true",dest="not_delete",
help="scan directory only ,don't delete file")
parser.add_argument("-o","--output",type=argparse.FileType("w"),
help="output of scan result")
args = parser.parse_args()
print "Dir:{}".format(args.dir)
if args.not_delete:
print "we are in safe mode."
output_fifo=""
output_filename=""
if args.output:
output_fifo=args.output
output_filename=args.output.name
else:
fd, output_filename=tempfile.mkstemp(prefix="dedu-",suffix=".log")
output_fifo=os.fdopen(fd,"w")
print "output file:{}".format(output_filename)
output_fifo.close()
python 命令行解析模块_【Python模块】命令行解析--argparse相关推荐
- python中的logging记录日志_[ Python入门教程 ] Python中日志记录模块logging使用实例...
python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到 ...
- python开发环境功能介绍_第一模块 第3章 Python介绍与环境配置
python入门(全为重点) 1. 编程语言介绍 编程语言分类.总结 2. python介绍 3. 解释器多版本共存 4. 运行python程序的两种方式 5. 一个python程序运行的三个步骤(* ...
- python keyboard模块_[python] PyMouse、PyKeyboard用python操作鼠标和键盘
1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quartz, ...
- python 爬取财经新闻_如何用 100 行 Python 代码实现新闻爬虫?
CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 每天我都要坐地铁上班,而地铁里完全没有手机信号.但我希望在坐地铁的时候读些新闻,于是就写了下面这个新闻爬虫. 我 ...
- python批处理远程关机脚本_使用shutdown命令实现远程关机和重启
在进行远程连接的时候,经常要远程关机,远程重启.在进行服务器远程维护时,经常需要进行远程关机.重启等电脑基础操作,使用SHUTDOWN强制关机重启命令和开始菜单的关机重启命令,基本可以保障远程电脑快速 ...
- 四全集学python选哪种电脑_“Python教程哪个版本最适合学习?“python教程全集
python教程,求一套比较好的python教程 好不好主要先看你自己,理解能力样,有没有接触过编程,有没础,这很重要: 看教程,能不能先给你建立起知识体系框架,许多教程一上来就直接给你灌输知识很让人 ...
- python完全支持面向对象编程_[Python] 类与面向对象编程
1. class语句 类通常是由函数.变量和属性组成的集合.使用class语句可以定义类,例如: class Account(object): num_accounts = 0 def __init_ ...
- python实训的意义_[Python] 一个让我更加清楚地理解了字典的实验……
背景 由于一些安全上的要求,笔者所在公司在阿里云上的主机都要写白名单ACL.其中一个安全组中有监控的脚本需要发消息给企业微信,然后就犯了难--企业微信并没有接口告诉我们它的URL最后会解析为哪些ip, ...
- python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)
[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...
- python小软件制作教程_[Python]手把手教程:Python制作番茄钟
这篇文章是根据Udacity的免费课程 编程基础:Python所做的笔记,适合零基础学习Python 我们先了解这个番茄钟的概念,就是每隔一段固定的时间就提醒你休息一下,可能是播放一段音乐, 弹出一个 ...
最新文章
- Re题目------Enm.exe
- python如何把数字转化成字符_python 定义一个dictpython如何将数字转化为字符串
- 简单高效!浙大CAD腾讯哥大开源跨尺度的Transformer,显著涨点检测、分割、分类三大CV任务!...
- 黑群晖给局域网电脑发消息_老电脑搭建家用NAS,省钱又好用
- java怎么确定数据在区间内_电脑数据怎么恢复详细篇,我们该如何确定故障如何进行数据恢复!...
- You have provided a value for the LANGUAGE_CODE setting that is not in the LANGUAGES setting
- 4. 卷2(进程间通信)---管道和FIFO
- 小明是个急性子,上小学的时候经常吧老师写在黑板上的题目抄错 有一次,老师出的题目是:36x495=? 他却给抄成了:396x45=? 但是结果很戏剧性,他的 答案是对的 因为36*495 = 39
- 公路堵车概率模型:Nagel-Schreckenberg 模型模拟
- 魔法表格(MagicTable)入门教程--CAD转Excel、CAD多个表格批量转Excel
- Elasticsearch 7.7.0 高阶篇-聚合技术
- MySQL备份报错mysqldump: Got error: 1045: Access denied for user ‘root‘@‘localhost‘ (using password: YES)
- 生活杂谈-简单电器维修知识
- Java常用集合排序
- 大写金额换算器iOS版源代码
- 5G驻留比提升经验总结
- wincc做皮带动画_WINCC动画脚本集锦
- Hive desc详解
- 剑指offer 专项突破版 78、合并排序链表
- MIPCMS如何用火车头采集自定义字段?