川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

python 调用方法 实现 shell命令

作者:川石学院 日期:2022-07-22 17:44:46 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“python 调用方法 实现 shell命令”。

JavaScript 在 selenium 自动化中的应用(图1)

  简述

  python 调用方法 实现 shell命令的执行,其是 开启了一个子进程。

  从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system、os.spawn、os.popen

  不但可以调用外部的命令作为子进程,而且可以 连接到子进程 的input/output/error管道,获取相关的返回信息。

  所以 os.system或者os.popen等模块,放弃它们吧。

  其中最有用的是 call(执行系统命令)、check_call(执行结果不为0则抛出异常)、

  check_output(最方便的获取执行的输出的函数)、Popen+PIPE(支持管道的多命令执行)。

  例子:

  call

  会开启一个 子进程 去执行,并且 等待子进程结束 才继续执行其他的,使用起来非常方便

  import subprocess

  res = subprocess.call(["ls", "-al"])

  print("\n")

  # args参数(call的第一个参数) 由字符串形式提供且有 多个命令参数时,需要提供 shell=True 参数:

  res = subprocess.call("ls -al", shell=True)

  与call方法类似,不同在于如果命令行 执行成功,check_call返回返回码0,执行失败 就会 抛出 subprocess.CalledProcessError 异常。

  subprocess.CalledProcessError 异常包括returncode、cmd、output等属性,其中returncode是子进程的退出码,cmd是子进程的执行命令,output为None。

  import subprocess

  try:

  res = subprocess.check_call(['ls', '?'])

  print 'res:', res

  except subprocess.CalledProcessError as e:

  print('returncode:', e.returncode)

  print('cmd:', e.cmd)

  print('output:', e.output)

  # 输出:

  '''

  ls: 无法访问'?': 没有那个文件或目录

  returncode: 2

  cmd: ['ls', '?']

  output: None

  '''

  Popen

  与call方法类似,不同在于 Popen 是无阻塞的,会和主程序并行运行,

  而 call 必须 等待命令执行完毕 再执行 后面的 代码。

  import subprocess

  res = subprocess.Popen("ls -al", shell=True)

  print(res)

  print(123)

  # 说明:

  '''

  先执行 两个 print ,然后再 执行 命令, 所以输出是: 

<subprocess.Popen object at 0x7f10929cf048>

123

总用量 60

drwxr-xr-x 8 hero hero 4096 7月   6 17:37 .

drwxr-xr-x 6 hero hero 4096 4月  12 13:48 ..

drwxr-xr-x 5 hero hero 4096 7月   6 17:35 aaa

-rw-r--r-- 1 hero hero 1008 7月   6 16:47 aaa.py

'''


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-07-22 17:44:46
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-07-22 17:44:46
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-07-22 17:44:46
  • 建筑工程专业朱同学成功转行为软件测试人!2022-07-22 17:44:46
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-07-22 17:44:46
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-07-22 17:44:46
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-07-22 17:44:46
  • 文科生转行软件测试照样拿下高薪15K!2022-07-22 17:44:46
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-07-22 17:44:46
  • 毕业1年,迷茫的他最终选择转行软件测试2022-07-22 17:44:46