设为首页 收藏本站
查看: 1137|回复: 0

[经验分享] 向python脚本传递参数

[复制链接]

尚未签到

发表于 2018-8-15 11:29:53 | 显示全部楼层 |阅读模式
  import sys
  print sys.argv[0]
  sys.argv[0]是python脚本的名字;
  下面的例子是一个用来提取文本log.txt中含有匹配字符串的文本行,匹配字符串的字符串当作参数传递给python脚本。
  #!/usr/bin/env python
  import sys
  import re
  f = open("log.txt", "rb")
  info = open("info.txt", "ab")
  for line in f.readlines():
  if re.search(sys.argv[1], line):
  info.write(line)
  info.close()
  f.close()
  Python文件内部接收参数用:
  sys.argv
  sys.argv[0]:是python脚本名
  sys.arg[1]及以后各项:是接收的参数
  #! /bin/python
  import sys
  for arg in sys.argv:
  print arg
  需要模块:sys
  参数个数:len(sys.argv)
  脚本名:    sys.argv[0]
  参数1:     sys.argv[1]
  参数2:     sys.argv[2]
  test.py
  import sys
  print "脚本名:", sys.argv[0]
  for i in range(1, len(sys.argv)):
  print "参数", i, sys.argv
  >>>python test.py hello world
  脚本名:test.py
  参数 1 hello
  参数 2 world
  python中使用命令行选项:
  例如我们需要一个convert.py脚本。它的作用是处理一个文件,并将处理后的结果输出到另一个文件中。
  要求该脚本满足以下条件:
  1.通过-i -o选项来区别参数是输入文件还是输出文件.
  >>> python convert.py -i inputfile -o outputfile
  2.当不知道convert.py需要哪些参数时,用-h打印出帮助信息
  >>> python convert.py -h
  getopt函数原形:
  getopt.getopt(args, options[, long_options])
  import sys, getopt
  opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
  input_file=""
  output_file=""
  for op, value in opts:
  if op == "-i":
  input_file = value
  elif op == "-o":
  output_file = value
  elif op == "-h":
  usage()
  sys.exit()
  代码解释:
  a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。
  b) "hi:o:": 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。
  当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号
  所以"hi:o:"就表示"h"是一个开关选项
  
  "i:"和"o:"则表示后面应该带一个参数
  c) 调用getopt函数。函数返回两个列表:opts和args。
  opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。
  opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。
  getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)
  长选项格式举例:
  --version
  --file=error.txt
  让一个脚本同时支持短选项和长选项
  getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-552163-1-1.html 上篇帖子: 面试宝典_Python.运维开发.0004.用Python实现grep-A/-B前后匹配? 下篇帖子: ImportError: No module named setuptools 安装python库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表