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

[经验分享] python模块—command and sys

[复制链接]

尚未签到

发表于 2018-8-9 08:59:39 | 显示全部楼层 |阅读模式
  1.commands模块
  linux系统环境下用于支持shell的一个模块
  1)getoutput()
  返回值只有返回结果(字符串类型),没办法判断执行结果是否正常
  例子
  import commands
  cmd = "ls /data/temp"
  result1 = commands.getoutput(cmd)
  print(type(result1))                   # 类型为str
  print(result1)
  结果:
  <type 'str'>
  2.py
  2)getstatusoutout()
  返回结果是一个tuple元组,第一个值为接收状态码,int类型,0表示正常,非0表示异常;第二个值为字符串,即shell命令执行的结果
  例子
  import commands
  cmd = "ps -ef"
  status,result2 = commands.getstatusoutput(cmd)
  print(type(status))
  print(status)
  print(type(result2))
  print(result2)
  结果:
  <type 'int'>
  0
  <type 'str'>
  UID         PID   PPID  C STIME TTY          TIME CMD
  root          1      0  0 Oct09 ?        00:00:14 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
  root          2      0  0 Oct09 ?        00:00:00 [kthreadd]
  2.sys模块
  1)通过sys模块获取程序参数
  sys.argv[0]:第一个参数,脚本本身
  sys.argv[1]:第二个参数,传入的第一个参数
  例子
  import sys
  print("argv[0]={0}   argv[1]={1}".format(sys.argv[0],sys.argv[1]))
  结果:
  argv[0]=C:/Users/test/PycharmProjects/a/a1.python.py    argv[1]=parameter1
  2)sys.stdin、sys.stdout、sys.stderr
  stdin、stdout、stderr 变量包含与标准I/O流对应的流对象。如果需要更好地控制输出,而print 不能满足你的要求,你也可以替换它们,重定向输出和输入到其它设备( device ),或者以非标准的方式处理它们
  例子1:sys.stdout与print
  import sys
  sys.stdout.write("hello"+ "\n")
  print("hello")
  结果:
  hello
  hello
  例子2:sys.stdin与raw_input
  import sys
  name1 = raw_input("input your name: ")
  print(name1)
  print 'stdin_your_name: ',        # command to stay in the same line
  name2 = sys.stdin.readline()[:-1]     # -1 to discard the '\n' in input stream
  print(name2)
  结果:
  input your name: huangzp
  huangzp
  stdin_your_name: huangzp
  huangzp
  例子3: 控制台重定向文件
  import sys
  f_hander = open("out.log","w")
  sys.stdout = f_hander
  print("hello")
  结果:
  本地生成一个out.log文件,内容为hello
  3)捕获sys.exit(n)调用
  执行到主程序末尾,解释器自动退出,但如需中途退出程序,可以调用sys.exit函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0是正常退出,其他为异常)
  例子
  import sys
  def exitfunc():
  print "hello world"
  sys.exitfunc = exitfunc   # 设置捕获时调用的函数
  print "start"
  sys.exit(1)               # 退出自动调用exitfunc()后,程序退出
  print "end"             # 不会执行print
  结果:
  start
  hello world
  说明:
  设置sys.exitfunc函数,及当执行sys.exit(1)的时候,调用exitfunc函数;sys.exit(1)后面的内容就不会执行了,因为程序已经退出

运维网声明 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-548934-1-1.html 上篇帖子: Python变量类型 下篇帖子: python安装paramiko模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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