python调用外部命令

os.system: 输出在终端上,捕捉不到

os.popen: 只能捕捉到标准输出,捕捉不到标准错误输出

os.popen2: 返回2个对象,一个是标准输入,一个是标准输出

os.popen3: 返回3个对象,标准输入,标准输出,标准错误输出

os.popen4: 返回2个对象,pip_in 和pip_out_err

os.system: 输出在终端上,捕捉不到In [4]: os.system('ls')

13001195917 1_md5.py 1_walk.py 2.txt ErrorExcept.py hashlib2.py test top10.py walk1.py yield1.py yield2.py 非码+支付宝会员_喜欢牛肉_手机号码.txt

Out[4]: 0

In [6]: s = os.system('ls')

13001195917 1_md5.py 1_walk.py 2.txt ErrorExcept.py hashlib2.py test top10.py walk1.py yield1.py yield2.py 非码+支付宝会员_喜欢牛肉_手机号码.txt

In [7]: s

Out[7]: 0 #echo $? 返回值为0,

In [9]: s = os.system('ls a')

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

In [10]: s

Out[10]: 512 #echo $? 返回值为512

os.popen: 只能捕捉到标准输出,捕捉不到标准错误输出In [12]: out = os.popen('ls')

In [13]: out.read()

Out[13]: '13001195917\n1_md5.py\n1_walk.py\n2.txt\nErrorExcept.py\nhashlib2.py\ntest\ntop10.py\nwalk1.py\nyield1.py\nyield2.py\n\xe9\x9d\x9e\xe7\xa0\x81+\xe6\x94\xaf\xe4\xbb\x98\x

e5\xae\x9d\xe4\xbc\x9a\xe5\x91\x98_\xe5\x96\x9c\xe6\xac\xa2\xe7\x89\x9b\xe8\x82\x89_\xe6\x89\x8b\xe6\x9c\xba\xe5\x8f\xb7\xe7\xa0\x81.txt\n'

os.popen2: 返回2个对象,一个是标准输入,一个是标准输出In [23]: stdin, stdout = os.popen2('sort')

/usr/local/bin/ipython:1: DeprecationWarning: os.popen2 is deprecated. Use the subprocess module.

#!/usr/local/bin/python2.7

In [24]: stdin.write('hello') #stdin输入hello

In [25]: stdin.write('world')

In [26]: stdin.write('abc\n')

In [27]: stdin.write('123\n')

In [28]: stdin.close()

In [29]: stdout.read() #stdout.read()会把stdin()的标准输入排序输出

Out[29]: '123\nhelloworldabc\n'

os.popen3: 返回3个对象,标准输入,标准输出,标准错误输出In [33]: stdin, stdout, stderr = os.popen3('ls a')

/usr/local/bin/ipython:1: DeprecationWarning: os.popen3 is deprecated. Use the subprocess module.

#!/usr/local/bin/python2.7

In [34]: stderr.read() #执行stderr报错

Out[34]: 'ls: \xe6\x97\xa0\xe6\xb3\x95\xe8\xae\xbf\xe9\x97\xaea: \xe6\xb2\xa1\xe6\x9c\x89\xe9\x82\xa3\xe4\xb8\xaa\xe6\x96\x87\xe4\xbb\xb6\xe6\x88\x96\xe7\x9b\xae\xe5\xbd\x95\n'

os.popen4: 返回2个对象,pip_in 和pip_out_err(标准输出和标准错误输出保存到一个输出pip_out_err)

subprocess模块In [43]: import subprocess

In [50]: subprocess.call(['ls abcd.txt'])

OSError: [Errno 2] No such file or directory

In [10]: subprocess.call(['ls -l']) #会把-l当成一个文件,找不到该文件

OSError: [Errno 2] No such file or directory

In [49]: subprocess.call(['ls -l'],shell = True) #默认shell=False ,shell=True,表示执行ls -l命令

总用量 2888

-rw-r--r-- 1 root root 12 12月 6 19:50 13001195917

-rw-r--r-- 1 root root 453 12月 6 19:31 1_md5.py

-rw-r--r-- 1 root root 453 12月 2 16:48 1_walk.py

-rw-r--r-- 1 root root 14 12月 6 16:42 2.txt

In [51]: help(subprocess.call)

call(*popenargs, **kwargs) #表示接受冗余参数

In [54]: subprocess.call(['ls','-l']) #或者写入列表中

总用量 2888

-rw-r--r-- 1 root root 12 12月 6 19:50 13001195917

-rw-r--r-- 1 root root 453 12月 6 19:31 1_md5.py

-rw-r--r-- 1 root root 453 12月 2 16:48 1_walk.py

-rw-r--r-- 1 root root 14 12月 6 16:42 2.txt

In [58]: a=subprocess.check_call(['ls','-l'])

总用量 2888

-rw-r--r-- 1 root root 12 12月 6 19:50 13001195917

-rw-r--r-- 1 root root 453 12月 6 19:31 1_md5.py

-rw-r--r-- 1 root root 453 12月 2 16:48 1_walk.py

-rw-r--r-- 1 root root 14 12月 6 16:42 2.txt

-rw-r--r-- 1 root root 412 12月 7 20:25 ErrorExcept.py

-rw-r--r-- 1 root root 425 10月 24 05:57 hashlib2.py

drwxr-xr-x 2 root root 4096 10月 24 06:03 test

-rw-r--r-- 1 root root 556 12月 6 16:06 top10.py

-rw-r--r-- 1 root root 430 10月 25 21:56 walk1.py

-rw-r--r-- 1 root root 128 10月 25 18:07 yield1.py

-rw-r--r-- 1 root root 680 10月 25 21:27 yield2.py

-rw-r--r-- 1 root root 2910024 12月 6 16:48 非码+支付宝会员_喜欢牛肉_手机号码.txt

In [59]: a

Out[59]: 0

In [62]: a=subprocess.check_call(['ls','a']) #抛出异常

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

---------------------------------------------------------------------------

CalledProcessError Traceback (most recent call last)

in ()

----> 1 a=subprocess.check_call(['ls','a'])

/usr/local/lib/python2.7/subprocess.pyc in check_call(*popenargs, **kwargs)

538 if cmd is None:

539 cmd = popenargs[0]

--> 540 raise CalledProcessError(retcode, cmd)

541 return 0

542

CalledProcessError: Command '['ls', 'a']' returned non-zero exit status 2

In [63]: a #a的值还是0,并没有将异常的值保存到a中

Out[63]: 0

[root@133 systeminformation]# vim process_check_call.py

#!/usr/bin/env python

#ecoding=utf8

import subprocess

try:

subprocess.check_call('exit 1', shell = True)

except Exception:

print "exit 1返回echo $?不是0,抛出异常,打印出来"

[root@133 systeminformation]# python process_check_call.py

exit 1返回echo $?不是0,抛出异常,打印出来

#!/usr/bin/env python

#ecoding=utf8

import subprocess

try:

subprocess.check_call('exit 1', shell = True)

except subprocess.CalledProcessError: #不知道异常名称,使用:except Exception: 表示接受所有异常处理

pass

print "exit 1返回echo $?不是0,抛出异常,打印出来,捕捉到异常"

[root@133 systeminformation]# python process_check_call.py

exit 1返回echo $?不是0,抛出异常,打印出来,捕捉到异常

python 调用外部程序 终端异常_python调用外部命令相关推荐

  1. 调用外部程序处理文件_Python使用内置方法、模块调用外部命令

    导读 Python内置调用外部命令: os.system os.popen os.popen2 os.popen3 os.popen4 commands模块 subprocess模块 在Python3 ...

  2. python调用webservice接口实例_python调用各种接口,webservice,c接口,com接口,socket协议方法...

    python调用webservice接口(SOAP) (2)调用示例: 需要先安装suds库:pip install suds from suds.client import Client #如果需要 ...

  3. python 捕获多个异常_Python捕获多个异常

    python 捕获多个异常 We can use a try-except block to catch exceptions and process them. Sometimes we call ...

  4. python assertionerror是什么异常_Python 断言和异常

    Python 断言和异常 Python断言 断言是一种理智检查,当程序的测试完成,可以将其打开或关闭.断言的最简单方法就是把它比作raise-if语句(或更加准确,raise-if-not声明).一个 ...

  5. python文件不存在异常_Python基础知识:文件和异常

    1.相对路径:如果文件和程序在同一文件夹内,可不用路径:如果文件在程序所在文件夹下一级文件夹中,只需添加下一级文件夹名称即可: 在Linux和OS系统中:文件路径中使用斜杠(/) 在Windows系统 ...

  6. python中pip不是内部或外部命令_解决pip不是内部或外部命令

    解决 "'pip' 不是内部或外部命令,也不是可运行的程序或批 处理文件 " 的问题 今天本来想安装库来着,但是苦于 pycharm 的设置里不知道出了什么原因,无奈只能使用 PI ...

  7. python中pip不是内部或外部命令_‘pip’不被识别为内部或外部命令。

    'pip'不被识别为内部或外部命令. 我在我的电脑上安装Django时遇到了一个奇怪的错误. 这是我在命令行中输入的序列:C:\Python34>python get-pip.pyRequire ...

  8. cmd无法运行python_如何解决运行python指令提示不是内部或外部命令

    当我们将python安装成功后,运行python.exe能够执行python相关的操作,但是当我们在cmd命令窗口输入python时,提示"'python'不是内部或外部命令"导致 ...

  9. python调用c++动态库_Python调用C/C++动态链接库的方法

    本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef E ...

最新文章

  1. 用iframe设置代理解决ajax跨域请求问题
  2. 为什么只看重结果_猫很现实?猫只是看重结果
  3. python 箭头_Python命名箭头方向
  4. autopep8_Autopep8的使用
  5. 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0[已解决]
  6. mysql创建外键失败_mysql创建外键错误
  7. 图论 - 寻找fly真迹
  8. [渝粤教育] 西南科技大学 婚姻家庭继承法 在线考试复习资料
  9. vim配置运行python3快捷键_Linux VIM8 Python3 编辑器配置文件
  10. 日记 [2008年01月05日]NTP 服务器
  11. 配置vs2008和udk与nFringe
  12. linux x86软件改arm,x86程序移植到arm上
  13. python源码保护pyinstaller 打包exe运行成功 pytorch环境
  14. java自行车北京_JAVA公共自行车地图api调用代码实例
  15. html ifrme 选择器,html中iframe/css样式设置,id,class选择器的使用规则等学习2019.9.2 08:00...
  16. NumPy 快速入门系列:应用统计学基础概念、相关统计指标与NumPy的实现
  17. Gstreamer基础教程12: Streamer流
  18. struts2中如何使用servlet
  19. 【集合详解】ArrayList源码解读之动态扩容
  20. 端口号 一个端口号是否可以被多个进程绑定? 一个进程是否可以bind多个端口号?

热门文章

  1. vmware.fusion虚拟机下的CentOS使用
  2. ROS 科大讯飞语音 (一)环境搭建与准备
  3. JavaScript自适应图片大小的弹出窗口
  4. 未给员工足额缴纳公积金!董明珠曾豪言:每人一套房不需要公积金
  5. 7-11便利店都脏成这样了,我的午饭还靠它
  6. 李书福退出吉利汽车集团公司董事
  7. realme GT2 Pro抢先开启盲售:史上屏幕最好高端旗舰
  8. 消息人士:欧盟下月将对英伟达收购Arm交易展开正式调查
  9. iPhone 13系列相机有大升级:全系支持光学防抖功能
  10. 太难了!国内手机出货量大幅下降:华为跌幅小,小米跌惨了