python日常碎碎念

关于取命令行中参数的方法

1,sys.args

这个方法自动获取参数,并split。一般情况下第一个元素是程序的名字。即

python script.py arg1 arg2

然后sys.args返回的list就是[script.y, arg1, arg2]。

如果是用python -c ‘command...‘,这种args[0]就是‘-c‘ ps:用了这种方式干嘛还要去取参数。。

如果是直接用python,那args[0]就是空。ps:就是直接打开python,那我干嘛要取参数,尴尬

2,getopt

>>> import getopt
>>> args = ‘-a -b -cfoo -d bar a1 a2‘.split()
>>> args
[‘-a‘, ‘-b‘, ‘-cfoo‘, ‘-d‘, ‘bar‘, ‘a1‘, ‘a2‘]
>>> optlist, args = getopt.getopt(args, ‘abc:d:‘)
>>> optlist
[(‘-a‘, ‘‘), (‘-b‘, ‘‘), (‘-c‘, ‘foo‘), (‘-d‘, ‘bar‘)]
>>> args
[‘a1‘, ‘a2‘]

用法简单明了,getopt接收一个经过split的list,然后根据第二个参数(短参数构成的str,有需要赋值的用:冒号表示),如上面的c和d,就会跟上相应的值,但是,这种只能用于单字母,也就是shortopts

如果需要长参数,longopts,那就如下

>>> s = ‘--condition=foo --testing --output-file abc.def -x a1 a2‘
>>> args = s.split()
>>> args
[‘--condition=foo‘, ‘--testing‘, ‘--output-file‘, ‘abc.def‘, ‘-x‘, ‘a1‘, ‘a2‘]
>>> optlist, args = getopt.getopt(args, ‘x‘, [
...     ‘condition=‘, ‘output-file=‘, ‘testing‘])
>>> optlist
[(‘--condition‘, ‘foo‘), (‘--testing‘, ‘‘), (‘--output-file‘, ‘abc.def‘), (‘-x‘, ‘‘)]
>>> args
[‘a1‘, ‘a2‘]

第三个参数附上longopts的列表,并且要注意的是,如果是需要赋值的,就需要带上=

demo

import sys
import getopt

def main():
    try:
        opt, args = getopt.getopt(sys.argv[1:], ‘ho:v‘, [‘help‘, ‘output=‘])
    except getopt.GetoptError as err:
        print(err)
        sys.exit(2)
    output = None
    verbose = False
    for o, a in opts:
        if o == ‘-v‘:
            verbose = True
        elif o in (‘-h‘, ‘--help‘):
            sys.exit()
        elif o in (‘-o‘, ‘--output‘):
            output = a
        else:
            assert False, ‘unhandled option‘

if __name__ == ‘__main__‘:
    main()

demo里面处理了h(help), o(output), v这几个参数

以上例子就来自官方文档

时间: 2024-10-05 03:26:25

python日常碎碎念的相关文章

一个十二年老程序猿的碎碎念h5牛牛程序出售

我是一名程序猿,在上95年上初中的时候h5牛牛程序出售(http://h5.hxforum.com) 联系方式170618633533企鹅2952777280 源码出售 房卡出售 后台出租有意者私聊扣扣,别的还在都在打篮球.踢足球的时候,我就已经在玩QBasic了,每逢跟其他程序猿说起这段的时候,大家都会投过来羡慕的眼光,其实没有你们想的那么好,反而挺悲催的,当时的同学们都不知道我在说些啥,另外我至今都不会打篮球.踢足球.果然不出意外(不会有意外的,我大学填报的所有志愿都是计算机系)的大学毕业后

省赛后的一点碎碎念

今天打完了湖南省省赛,A了两道题,打铁第二年. 今年感觉题目出的挺好的,数学题可能多一点,过了两道水题以后就再怎么也A不出题目了,然后一直到比赛结束,我们最后一个小时的时候应该主攻一道题,全力做出AC数最多的,不能再瞎看题目了,简单的都做不出来还看别的题目,做题策略也有问题. 反思: 1.  我觉得ACM这个比赛还是非常公平的,整体上付出和回报成正比,我平常就滑水,到了赛场就歇菜也很正常,自己努力程度不够造成的. 2.  切水题的速度不够快,平常做题还是少了,加上比赛时候的紧张什么的,就会有更多

工作中的感悟 (三)三个月碎碎念篇

感慨一下来这里工作已经有一个月了,从最初的不是很适应这里的节奏,到慢慢适应了这里的生活,中间的过程就像经过一场暴风雨的洗礼虽然说的有点夸张,但是也是差不多吧,同在学校比要累很多,不过坚信不管再累.也要坚持既然有人有干,那我们就可以干我们没有什么理由坚持不了.别人可以做到的我们一样可以做到. 刚来的时候以一种无所谓.既兴奋又有很多好奇的心态来到了北京,这里很多人梦想的地方,不禁感慨以后我也在北京这里开始了这里的生活,时间长了究竟会是怎样一种心境呢,据说这里压力大.这里消费高.这里租房忒别烦人,来到

一些关于Linux入侵应急响应的碎碎念

近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个字,顺藤摸瓜.我们常常需要找到比较关键的信息后通过一些指令查询或者分析日志,逐步分析黑客的具体步骤. 入侵后需要被关注的Linux系统日志 var/log/cron 记录crontab命令是否被正确的执行,一般会被黑客删除 var/log/lastlog 记录登录的用户,可以使用命令lastlog查

【碎碎念】百度前端技术学院春季班

早上迷迷糊糊被读研阶段的室友的微信叫醒了,邀约组队参加百度前端技术学院春季班(http://ife.baidu.com/),前室友在前端方面还是有一定造诣的,自己本身对前端开发又有一定兴趣,因此准备组团参与下. 想想我的技能树长得确实有点奇葩,最早是做嵌入式的,做了三个月点唱机跑去做产品和实施,跑完了大半个福州高校做某系统推广与实施后觉得做开发的童鞋的Bug有点多就边实施边改代码,久而久之就慢慢转向了开发,想想读研阶段白天上班写C#晚上下班写实验室的Java横向项目的经验也是蛮奇葩的,导致现在我

碎碎念

最近心情莫名的低落,明天就要上班了,希望紧张的生活节奏能让我的生活充实起来. 碎碎念,布布扣,bubuko.com

Oracle碎碎念

1. 设置SQL*Plus提示符 SQL> set sqlprompt "_user'@'_connect_identifier>" [email protected]> 为了对所有的SQL*Plus会话自动设置sqlprompt,将上面的命令放置在ORACLE_HOME/sqlplus/admin目录中的glogin.sql文件内 2. 查看角色RESOURCE被授予的系统权限 SQL> select * from dba_sys_privs where gr

Suse碎碎念

1. 如何查看Suse的版本号 vmpbos01:~ # lsb_release -d Description: SUSE Linux Enterprise Server 11 (x86_64) Suse碎碎念,布布扣,bubuko.com

OCS 2007与Lync 2013的一点碎碎念

最近的项目,跨度都比较大.这次碰上的是OCS2007升级Lync 2013.以下记录一些过程心得(吐槽),类似那篇<2003到2012>的博文. 最开始的计划是OCS2007(不带R2)全部推倒干净,然后启Lync2013.商量来商量去,怕推不干净的话,Lync2013部署会有问题.于是就想着OCS2007迁到R2再迁到Lync2013. 这时候一个非常屌的问题出现了! 原有OCS2007是企业版带有后端数据库,客户对于Lync2013企业版的价格有点唏嘘,需求也不高遂只要用标准版-那么-标准

工作一周年碎碎念

去年7月3日入职公司到现在,马上就要一周年了,觉得有必要写篇文章唠叨下. 期间在部门内转了一次组(那次换组可以看我之前那篇入职一个半礼拜写的文章,当时其实蛮失意的),现在又马上要转去另一个部门,自我评价算是比较爱折腾的:),可能比较好的做法是卡下述职评级时间再考虑换岗,哈哈.我在考虑换个环境的时候,单纯就是冲着技术方向和氛围走的,其实现在组里的同事.经理都非常nice,关系也蛮融洽,工作强度也不强,除了项目之外也腾得出自己的时间,照理说没必要换部门.但是总体感觉现在工作氛围有点轻松,技术氛围离我