文档章节

python 命令行参数实例

yehun
 yehun
发布于 2017/03/30 17:13
字数 420
阅读 4
收藏 1

在命令行下执行某些命令的时候,通常会在一个命令后面带上一些参数,这些参数会传递到程序里,进行处理,然后返回结果,在linux 下很多命令其实也是用python来实现的。

那么如果做到在命令行输入类似如下的命令并能得到正确的解析呢,比如:

python commandline.py -l c:/temp -f c:/aaa.txt

这样的命令,并在程序中进行处理。下面详细介绍处理办法。

python为我们提供了一个模块叫optparse,也是专门来处理命令行选项的。使用的方法

  • 1. 产生一个 optparse.OptionParser 对象
  • 2. 为这个对象增加 option
  • 3. 对 optparse.OptionParser对象进行parse_args() 解析. 就能得到要调用的方法,和具体的参数,下面就按这个步骤写了一个例子:
#coding:utf-8
import optparse
import sys
def execCommand():
    descriptionMessage = """
    python command line test
    """
    p = optparse.OptionParser(description=descriptionMessage,
                                prog='mycommand',
                                version='mycommand 0.1',
                                usage= '%prog [starting ][action]')
   
    p.add_option('--list', '-l',
            action="store_true",
            help='lists all files',
            default=False)
    
    p.add_option('--file', '-f',
            action="store_true",
            help='test process file',
            default=False)
                    
    options, arguments = p.parse_args()
    print 'get all options:',options
    
    if options.list:
        print 'begin list function :',arguments
        #可以写入你自己的逻辑了
        
    if options.file:
        print 'begin file function:',arguments
        #可以写入自己的逻辑处理了
        
if __name__=='__main__':
    execCommand()

由此我们可以发现, options 里面 记录了每个选项是否为 true ,而 arguments 里面按顺序记录了各自的参数。我们可以在自己的程序中得到,并进行处理。

当然,你还可以通过 print sys.argv 来得到所有的参数,但sys.argv[0]表示的就是当前执行的脚本.后面的才是参数.  

 

© 著作权归作者所有

yehun
粉丝 8
博文 218
码字总数 137225
作品 0
长宁
高级程序员
私信 提问
python学习笔记1.2基本语法、变量、数据类型

编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码: 上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码...

杨鹏飞乀
09/05
31
0
Python 命令行之旅 —— 初探 argparse

『讲解开源项目系列』启动——让对开源项目感兴趣的人不再畏惧、让开源项目的发起者不再孤单。跟着我们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎联系我们给我们投稿...

HelloGitHub
08/13
0
0
Python 函数 类 语法糖

Python 语法糖 ,换行连接 while,for 循环外的 else 如果 while 循环正常结束(没有break退出)就会执行else。 zip() 并行迭代 列表推导式 字典推导式 { keyexp : valueexp fro expression...

zzir
2016/08/13
0
0
王老板Python面试(10):17道python笔试面试真题

1、一行代码实现1--100之和 利用sum()函数求和 2、如何在一个函数内部修改全局变量 利用global 修改全局变量 3、列出5个python标准库 os:提供了不少与操作系统相关联的函数 sys: 通常用于命...

程序员八阿哥
2018/05/22
0
0
[转]optionParser模块的使用方法

Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,《Deep in python》一书中也有提到,只能简单处理 命令行参数; 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成...

阿木阿木
2014/03/08
66
0

没有更多内容

加载失败,请刷新页面

加载更多

教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

xiangyunyan
17分钟前
3
0
返回提示信息,如:xxx创建成功!

【服务端】在输出的方法块中,加入要输出的字段(qcm_batch_id) QCMUserType.cs: public struct QCM_Custom_Create_Batch_Out_Tag { public BASCoreType.Cmn_Out_T......

_Somuns
17分钟前
3
0
Aliyun Serverless VSCode Extension v1.12.0 发布

Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了函数计算 Fun 工具以及函数计算 SDK ,是一款 VSCode 图形化开发调试...

阿里云官方博客
17分钟前
4
0
程序员如何培养解决复杂问题的能力?

今天在上网时候,突然看到了这篇文章,感觉非常的适合现在的自己去思考下,可能也适用在座的读者。程序员不仅仅是敲代码,更是一个复合能力的结合体,也不仅仅停留在技术和代码阶段。你想要成...

哥本哈根的小哥
21分钟前
6
0
市场变化驱动产品思维升级

宜信科技中心财富管理产品部负责人Bob,与大家一起聊聊个性化推荐产品功能的设计和B端产品的功能策划方式。 拓展阅读:回归架构本质,重新理解微服务 智慧金融时代,大数据和AI如何为业务赋能...

宜信技术学院
22分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部