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

1,sys.argv

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

  1. python script.py arg1 arg2

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

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

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

2,getopt

  1. >>> import getopt
  2. >>> args = '-a -b -cfoo -d bar a1 a2'.split()
  3. >>> args
  4. ['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2']
  5. >>> optlist, args = getopt.getopt(args, 'abc:d:')
  6. >>> optlist
  7. [('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]
  8. >>> args
  9. ['a1', 'a2']

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

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

  1. >>> s = '--condition=foo --testing --output-file abc.def -x a1 a2'
  2. >>> args = s.split()
  3. >>> args
  4. ['--condition=foo', '--testing', '--output-file', 'abc.def', '-x', 'a1', 'a2']
  5. >>> optlist, args = getopt.getopt(args, 'x', [
  6. ... 'condition=', 'output-file=', 'testing'])
  7. >>> optlist
  8. [('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-x', '')]
  9. >>> args
  10. ['a1', 'a2']

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

demo

  1. import sys
  2. import getopt
  3.  
  4. def main():
  5. try:
  6. opt, args = getopt.getopt(sys.argv[1:], 'ho:v', ['help', 'output='])
  7. except getopt.GetoptError as err:
  8. print(err)
  9. sys.exit(2)
  10. output = None
  11. verbose = False
  12. for o, a in opts:
  13. if o == '-v':
  14. verbose = True
  15. elif o in ('-h', '--help'):
  16. sys.exit()
  17. elif o in ('-o', '--output'):
  18. output = a
  19. else:
  20. assert False, 'unhandled option'
  21.  
  22. if __name__ == '__main__':
  23. main()

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

以上例子就来自官方文档

python日常碎碎念的更多相关文章

  1. Linux碎碎念

    在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...

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

    近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...

  3. 一个谷粉和3年的Google Reader重度使用者的碎碎念

    2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...

  4. Jerry的碎碎念:SAPUI5, Angular, React和Vue

    去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...

  5. 结对编程ending-我和洧洧的碎碎念

    应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...

  6. C语言 · 分分钟的碎碎念

    算法提高 分分钟的碎碎念   时间限制:1.0s   内存限制:256.0MB      问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...

  7. 最近关于Qt学习的一点碎碎念

    最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...

  8. Java实现 蓝桥杯VIP 算法提高 分分钟的碎碎念

    算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用箭头画出这个念头的 ...

  9. python日常-list and dict

    什么是list: list 觉得算是python日常编程中用的最多的python自带的数据结构了.但是python重的list跟其他语言中的并不相同. 少年..不知道你听说过python中的appen ...

随机推荐

  1. 读sru代码

    1. def read_corpus(path, eos="</s>"): data = [ ] with open(path) as fin: for line in ...

  2. C++ 之Boost 实用工具类及简单使用

    本文将介绍几个 Boost 实用工具类,包括 tuple.static_assert.pool.random 和 program_options等等.需要对标准 STL 具备一定的了解才能充分理解本文 ...

  3. 64_t7

    texlive-ulqda-bin-svn13663.0-33.20160520.fc26.2..> 24-May-2017 15:57 33102 texlive-ulqda-doc-svn2 ...

  4. 金蝶K3物料选择问题(感觉Ctrl被按住了一样)

    金蝶K3在进入物料选择时,有时需要用Ctrl才可以进行多选,为什么有时不用Ctrl也可以进行多选,就像Ctrl被按住了一样? 解决:在物料选择界面按2次ctrl键单击物料可实现多选,再按2次ctrl则 ...

  5. JAVA_OPTS讲解【转】

    JAVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量. JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:Ma ...

  6. 好用的工具---screen命令

    问 题场景:要在服务器上配置环境,但是我的电脑无法直接连到服务器上,通常要经过好几次ssh跳转.配环境需要设置好几个用户,这自然需要同时打开好几个连 接服务器的终端窗口,每个连接到服务器的终端窗口都要 ...

  7. Nginx - 压缩模块

    1. 前言 在 Nginx 中与网页压缩相关的模块有两个:一个是 HttpGzipModule,另一个是 HttpGzipStaticModule.前者用于启用在文件传输过程中使用 gzip 压缩,而 ...

  8. window.onload绑定多个事件 —— 两种解决方案

    前言 有些函数,必须在网页加载完毕后执行.比如:涉及DOM操作的. 网页加载完毕时会触发一个onload事件,将函数绑定到这个事件上即可. window.onload = myFunction; 问题 ...

  9. HDU 4763 Theme Section(KMP+枚举公共前后缀)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4763 题目大意: 给你一个字符串s,存在一个子串E同时出现在前缀.中间.后缀,即EAEBE这种模式,A ...

  10. TCP连接建立与断开

    tcp状态 LISTEN:侦听来自远方的TCP端口的连接请求 LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和 ...