• 13
  • 13
分享
  • 使用Python执行系统命令方法——软件测试圈
  • 北极 2022-03-15 14:21:27 字数 1505 阅读 1514 收藏 13

Python是一款操作简单的编程语言,内置丰富的库,能够很容易的实现强大的功能,在使用Python进行框架搭建时,往往需要用到Python执行系统命令,一些开发人员对此不熟悉,以下是具体的操作方法:

1. os.system()

这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。

>>> import os
>>> output = os.system('cat /proc/cpuinfo')
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...   
>>> output # doesn't capture output
0

2. os.popen()

这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。

>>> output = os.popen('cat /proc/cpuinfo')
>>> output
<open file 'cat /proc/cpuinfo', mode 'r' at 0x7ff52d831540>
>>> print output.read()
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>><span style="font-size:14px;">

3. commands模块

>>> import commands
>>> (status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
>>> print output
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>> print status
0

注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。

注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。

4. subprocess模块

该模块是一个功能强大的子进程管理模块,是替换os.system, os.spawn*等方法的一个模块。

>>> import subprocess
>>> subprocess.Popen(["ls", "-l"]) <strong> # python2.x</strong> doesn't capture output
>>> subprocess.run(["ls", "-l"])  <strong># python3.x</strong> doesn't capture output
<subprocess.Popen object at 0x7ff52d7ee490>
>>> total 68
drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents
drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads
... ...
>>>

以上是列举的python执行系统命令的方法,如果需要这方面的操作,可以参考一下!


文章来源:百度文库

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   1. 基本原理  相机外参标定,通过拍摄多角度棋盘格标定相机外参。   2. 外参标定板设计  标定板分为垂直标定板和水平标定板,由于地面的水平标定板不容易被检测到,本文采用垂直标定板进行相机标定。   在标定过程中标定板需要和车身坐标成正交状态,也就是标定板垂直边需要和地平面垂直、水平边需要和水平面垂直,且与车身中轴线保持水平状态,这里推荐设计标定板支架,利用支架调整标定板位置,具体的标定板设计如下图所示,标定板通过底部支架保证上下边缘与地平面水平。标定板与支架示意图  3. 垂直标定板摆放   垂直标定板的摆放如下图所示,这里需要注意,标定板在标定相机时需...
            0 0 1510
            分享
          •        总有一些题,超越了岁月,即便是经过了新框架的层层迭代,它依然散发着令人回味无穷的味道。下面的几个笔试题目,是JAVA面试中经常遇见的,大家一定要牢记于心,可别复习到了到时候又说不出来。我就吃过这种亏,不说啦,下面来看题目。二维数组中的查找       面试题       在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。p...
            13 13 2494
            分享
          • 读者提问:APP 注册功能,用例怎么写 ?阿常回答:假定该注册为手机号发送验证码的注册方式,注册界面存在 3个输入框(手机号,密码,验证码), 2个按钮(发送验证码,注册),和 1个同意用户协议勾选框☑️。校验规则:手机号为 11位数字,密码为 8~20位大小写字母和数字,1小时内发送验证码上限为 5次。一、正常注册流程正常注册流程 case前置条件    应用安装成功,网络连接正常    输入数据    手机号18957440009,密码 Aa123456,验证码 20342测试步骤1、输入手...
            0 0 2057
            分享
          •   Pytest简介  Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries.  通过官方网站介绍我们可以了解到,pytest是一个非常成熟的全功能的python测试框架,主要有以...
            0 0 1253
            分享
          •   软件测试记录,是一项比较考验逻辑思维和想象力的工作。它既不像软件开发那样有实实在在的代码作为工作成果的展示,也没有BA那样,将软件需求拆分为story,就能够决定项目的走向。测试工程师的测试成果则没有那么明显,没有很容易可度量的成果展示,那么为了保证软件质量,同时也要知会给项目相关方,那么测试日报和测试报告就是非常重要的途径了。  测试日报和测试报告,在一定程度上是可以避免冗长的会议汇报,以及反复和项目相关方的沟通,体现了数据一次性报备,同时在原有邮件上全部回复式的更新,可以清晰地体现出测试工作的推进和版本的迭代情况。有助于未能深入了解项目的相关方,从基础数据入手来了解整个项目的运行。同时...
            0 0 857
            分享
      • 51testing软件测试圈微信