os.system()和os.popen()概述

大家搞python与操作系统交互时,必须掌握的两个方法就是os.system()和os.popen(),也是在相关技术领域面试中必问的题目!本文就对这两个命令进行详细介绍,os.system()和os.popen()都可以执行shell命令,但是他们还是有一定的区别的。

话不多说,先拿实例说事儿!

目录/opt/scripts/test 中包括文件:ClassDemo2.groovy ClassDemo.groovy Demo3.groovy pyscript.py

我们执行os.system命令:

>>> os.system('cd /opt/scripts/test;ls')
ClassDemo2.groovy ClassDemo.groovy Demo3.groovy pyscript.py
0

这里的0表示执行成功

接下来再看os.popen命令:

>>> os.popen('cd /opt/scripts/test;ls')
<open file 'cd /opt/scripts/test;ls', mode 'r' at 0x7fa7dd7d1660>

如果想看到具体的值,可以这样使用

>>> f=os.popen('cd /opt/scripts/test;ls')
>>> print(f.readlines())
['ClassDemo2.groovy\n', 'ClassDemo.groovy\n', 'Demo3.groovy\n', ,'pyscript.py\n']

注意如果连续执行多条语句可以使用“;”分割,实例中的cd /opt/scripts/test;ls 就是相关应用。

具体细节如下:

1. 命令被分号“;”分隔,这些命令会顺序执行下去;

2. 命令被“&&”分隔,这些命令会顺序执行下去,遇到执行错误的命令停止;

3. 命令被双竖线“||”分隔,这些命令会顺序执行下去,遇到执行成功的命令停止,后面的所有命令都将不会执行;

os.system细节

os.system方法是os模块最基础的方法,其它的方法一般在该方法基础上封装完成。返回的是退出状态码。os的system原理是每一条system函数执行时,通过当前 Shell 启动的一个新的子进程或子 Shell 被称为 SubShell (子 Shell )。子 Shell 会自动继承父 Shell 的很多环境,如环境变量、工作目录、文件描述符等,但是反之,子 Shell 中的环境仅在子 Shell 中有效,父 Shell 无法读取子 Shell 的环境。例如,如果在父 shell 里定义全局变量,子 shell 中就可以调用该变量。但当在子 shell 中定义一个局部变量时,父 shell 是无法读取该变量的。

os.popen细节

os.popen() 方法用于从一个命令打开一个管道,返回的是命令的输出结果。从这个命令获取的值可以继续被使用。因为它返回一个文件对象,可以对这个文件对象进行相关的操作。

popen()方法语法格式:

os.popen(command[, mode[, bufsize]])

参数:

command -- 使用的命令

mode -- 模式权限可以是 'r'(默认) 或 'w'。

bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于终端设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

返回值:

返回一个文件描述符号为fd(文件索引)的打开的文件对象

二者使用总结

如果要直接看到运行结果的话,应该使用os.system;如果需要获取返回值做进一步的处理则使用os.popen

Python面试高频问题: os.system()和os.popen()的区别相关推荐

  1. python os system用法_Python调用系统命令os.system()和os.popen()的实现

    作为一门脚本语言,写脚本时执行系统命令可以说很常见了,python提供了相关的模块和方法. os模块提供了访问操作系统服务的功能,由于涉及到操作系统,它包含的内容比较多,这里只说system和pope ...

  2. python执行系统命令的方法_python执行系统命令的方法 :os.system(),subprocess.popen(),command...

    最近接触到os.system(),subprocess.popen()和commands来执行系统命令,从网上搜索到许多,现整理如下. 1. 使用os.system("cmd") ...

  3. python(45)内置函数:os.system() 和 os.popen()

    os.system() 和 os.popen() 概述 os.popen() 方法用于从一个命令打开一个管道. 在Unix,Windows中有效 语法 popen()方法语法格式如下: os.pope ...

  4. python中os system_Python调用系统命令os.system()和os.popen()的实现

    作为一门脚本语言,写脚本时执行系统命令可以说很常见了,python提供了相关的模块和方法. os模块提供了访问操作系统服务的功能,由于涉及到操作系统,它包含的内容比较多,这里只说system和pope ...

  5. python os.system()和os.popen()

    1>python调用Shell脚本,有两种方法:os.system()和os.popen(), 前者返回值是脚本的 退出状态码,后者的返回值是脚本执行过程中的 输出内容. >>> ...

  6. python中os.system、os.popen、subprocess.popen的区别

    最近项目中需要在python中执行shell脚本,以下解释使用os.system. os.popen和subprocess.popen的区别: 1.os.system 该函数返回命令执行结果的返回值, ...

  7. Python中 os.popen、os.system和subprocess.popen方法介绍

    Python 提供了多种与操作系统交互的方法,比如os模块中的popen和system方法,此外,Python subprocess模块中的Popen类也提供了与操作系统交互的方法,使用起来更加灵活, ...

  8. windows popen 获取不到输出_彻底明白os.system、os.popen、subprocess.popen的用法和区别...

    Hello,大家好,沉寂许久,我又来了,这次给大家分享的就是上述三个方法的使用范围和区别,不熟悉的可以在这个地方画一个圆满的句号了. os.system 首先来看这个函数的文档说明 是说是在一个子sh ...

  9. os.system和os.popen和commands

    os.system和os.popen os.system(cmd)的返回值是脚本的退出状态码,只会有0(成功),1,2 os.popen(cmd)返回脚本执行的输出内容作为返回值 当你想把执行命令返回 ...

最新文章

  1. Codeforces Round #665 (Div. 2) 题解( 小学奥数专场 )
  2. linux mount 内核镜像,在Linux live system中创建loop设备并挂载镜像文件
  3. 软件的安装(包括yum仓库与源码包的安装)
  4. GTKmm 学习资料
  5. BootStrap入门教程 (二)
  6. mysql简单的命令centos版
  7. 网课题库收录API接口以及免费网课查询API接口
  8. postman下载excel出现乱码
  9. 大数据、数据挖掘和机器学习,带了哪些业务价值?
  10. 深度Linux关闭搜狗后没法输入,在Deepin系统中搜狗输入法问题反馈和一些问题的解决方法...
  11. 【修真院“纯洁”系列之十九】驱逐令
  12. JAVA开发讲义(一)-Java的自白
  13. H.266/VVC-VTM代码学习18-自适应QP设置(Adaptive QP)
  14. java 绘制长方形_用java画矩形与正方形
  15. 【Solidswork】Solidswork如何画真实螺纹
  16. 联想昭阳K4e电脑系统错误导致屏幕闪烁怎么重装系统?
  17. 煤炭行业转型箭在弦上,云+AI推进两化深度融合
  18. springboot框架开发医院云HIS 住院医生站、住院护士站功能实现
  19. Balsamiq Mockups Keygen
  20. office自动更新提示0xc0000142错误 解决办法

热门文章

  1. WSL2设置局域网网访问
  2. 旷视科技2023校园招聘提前批正式启动!
  3. 最全的厚黑学…教你怎样混社会
  4. 对女朋友超级抠门的星座男 12星座老公的致命缺点 12星女无法招架的求爱手段...
  5. 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL
  6. 不看会后悔的100个超有趣冷知识(一)
  7. 如何解决SQLServer已超过了锁请求超时时段
  8. Java网课基础笔记(7)19-07-19
  9. VC2008中将CString转换成const char*的一种有效方法
  10. NLP创业破局,如何摘取更高处的果实