python学习笔记14-optparse真正的命令行参数

真正的命令行参数

-c/--chars:命令行选项

dest:为选项定义变量名,值characters就是’-c’选项的名字

default=False:characters的值False,意思是默认情况下命令不带-c选项

help:选项的解释说明部分

[[email protected] wc]# vim 9_optparse.py 

#!/usr/bin/env python
import sys, os
from optparse import OptionParser

parser = OptionParser()
parser.add_option("-c", "--char",
                  dest="chars",
                  action="store_true",
                  default=False,
                  help="only count chars")

parser.add_option("-w", "--word",
                  dest="words",
                  action="store_true",
                  default=False,
                  help="only count words")

parser.add_option("-l", "--line",
                  dest="lines",
                  action="store_true",
                  default=False,
                  help="only count lines")

options, args = parser.parse_args()
print options, args

data = sys.stdin.read()
chars = len(data)
words = len(data.split())
lines = data.count(‘\n‘)

if options.chars:
    print chars,
if options.words:
    print words,
if options.lines:
    print lines
    
[[email protected] wc]# cat /etc/hosts |  python 9_optparse.py -c
{‘chars‘: True, ‘lines‘: False, ‘words‘: False} []
1534
[[email protected] wc]# cat /etc/hosts |  python 9_optparse.py -c -w
{‘chars‘: True, ‘lines‘: False, ‘words‘: True} []
1534 74
[[email protected] wc]# cat /etc/hosts |  python 9_optparse.py -c -w -l
{‘chars‘: True, ‘lines‘: True, ‘words‘: True} []
1534 74 19
[[email protected] wc]# cat /etc/hosts |  python 9_optparse.py 
{‘chars‘: False, ‘lines‘: False, ‘words‘: False} []

options和args理解?

parse_args()这个方法返回两个值,options和args,分别是对象和列表,options里包括所有使用parser.add_option()这个方法定义的选项,比如‘-w‘。
options.words就是存储‘-w‘这个选项的,它的值是True或者False,比如脚本后面带-w选项时,那么options.words的值就是True。
下面这个在ipython下的输出,由于没有使用add_option()定义任何选项,所以options的输出里没有选项的值。
这个是python自带的模块,想具体了解它的内部是如何实现的,源码文件在这个位置,/usr/lib64/python2.6/optparse.py。

脚本中这样定义的:dest = "characters",
后面应该这样判断:if options.characters,而不是if options.chars

dest和action有什么用?看Help似乎没怎么提到?

在代码里引用选项时需要dest后面定义的那个名字,比如引用-c选项,就使用options.characters,每个选项都需要dest去定义一个名字,这个值就是选项的名字,目的就是在程序中去引用这个选项,比如:if not (options.characters or options.words or options.lines):括号里就是在引用这些选项。
有的命令后面的选项就是一个字母,有的不仅有字母,而且后面还有值,比较一下下面这两个命令:
wc -l /etc/passwd
tail -n 20 /etc/passwd
-l与-n都是选项,但是行为不一样,-l后面没有值,-n后面有值,那么选项后面带不带值是action决定的,如果action="store_true",那么说明选项后面没有值,如果action=‘store‘,说明选项后面需要带值。
脚本后面跟-h时,可以看到help定义的内容。

那default又是有什么作用,为False和True分别表示什么?

拿-c选项举例子,
default如果为True,表示脚本后面如果不加-c选项,默认也是有-c的行为的。
default为False时,表示脚本后面不加-c选项,就没有-c的行为,比如wc -l /etc/hosts,没有-c选项,就说明不对字符统计,只对行数统计

时间: 2024-10-21 16:35:10

python学习笔记14-optparse真正的命令行参数的相关文章

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

lua学习笔记10:lua简单命令行

前面多次用了命令行,这次就好好学下命令行: 一 格式 lua [options][script][args] 二 具体命令 -e 直接将命令传个lua -l 加载一个文件 -i 进入交互模式 例如,终端输入: lua -e "print(math.sin(12))" lua学习笔记10:lua简单命令行,布布扣,bubuko.com

python 文件处理 -- 02 文件属性&amp;标准输入输出&amp;命令行参数&amp;文件编码

1文件属性 file.fileno()--文件描述符 file.mode--文件当前打开的权限 file.encoding--文件编码格式(无输出表明为ASCII码) file.closed--文件是否被关闭 >>> f.fileno() 3 >>> f.mode 'r+' >>> f.encoding >>> f.closed False >>> filter(lambda s:s[:2]!='__',dir(f)

Nginx学习笔记02Nginx启动运行与命令行

1.1. Nginx启动运行 Nginx的配置文件的一个简单的例子. conf目录下的nginx.cfg文件的内容如下: #worker进程个数. worker_processes  1; #事件模块. events { worker_connections  1024; } #http模块. http { include       mime.types; default_type  application/octet-stream; #在8000端口监听. server { listen  

Python学习笔记14(socket编程)

socket更详细的介绍在这篇就不做说明了,有兴趣的同学可以去网上查找相关资料或者直接https://docs.python.org/3/library/socket.html查看 简单的理解,socket就是将更底部的FTP.UDP等协议进行的一次封装,不用他们是如何进行三次握手四次挥手,只暴露给我们一个send发送数据和recv接收数据.因为双方进行通信最本质的作用就是收发数据. 一.声明一个socket对象 sk = socket.socket(socket.AF_INET,socket.

Python学习笔记14:标准库之信号量(signal包)

signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等. 要注意,signal包主要是针对UNIX平台(比如Linux, MAC OS),而Windows内核中由于对信号机制的支持不充分, 所以在Windows上的Python不能发挥信号系统的功能. 定义信号名 signal包定义了各个信号名及其对应的整数,比如 import signal print signal.SIGALRM print signal.SIGCONT

SQL Server 2012学习笔记 2 Server Core中命令行安装SQL

Setup.exe /qs /ACTION=Install /FEATURES=SQLEngine,Replication /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="<DomainName\UserName>" /SQLSVCPASSWORD="<StrongPassword>" /SQLSYSADMINACCOUNTS="<DomainName\UserName>"

【Python 命令行参数解析: optparse 模块】

大家在使用Python进行脚本开发时,经常需要通过终端交互的方式对Python的脚本模块进行调用.这时在 Python模块中提供基础的命令行参数支持是必不可少的.那么,在Python中我们如何实现命令行参数的传入和解析呢,如下内容将对此进行简要的介绍. Python对命令行参数解析的支持 Python中通过两个内建模块对命令行参数解析进行支持:getopt 和 optparse 两种内置支持 模块名 功能说明 getopt 对命令行参数进行简单的处理 optparse 能够对命令行参数进行复杂的

docopt——好用的Python命令行参数解释器

Qingchat使用的命令行参数解释器是 docopt,用下来感觉非常棒,所以决定介绍一下这个库.( 奉劝各位看官,真爱生命,远离argparse. ) 介绍 docopt 本质上是在 Python 中引入了一种针对命令行参数的形式语言,在代码的最开头使用""" 文档注释的形式写出符合要求的文档,就会自动生成对应的parse,体验非常赞. 用法 样例 docopt的使用非常简单,以Qingchat为例,你只需要在代码最开头加入: """Qingc

python基础教程_学习笔记14:标准库:一些最爱——re

标准库:一些最爱 re re模块包含对正则表达式的支持,因为曾经系统学习过正则表达式,所以基础内容略过,直接看python对于正则表达式的支持. 正则表达式的学习,见<Mastering Regular Expressions>(精通正则表达式) re模块的内容 最重要的一些函数 函数 描述 compile(pattern[,flags]) 根据包含正则表达式的字符串创建模式对象 search(pattern,string[,flags]) 在字符串中寻找模式 match(pattern,st