iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python调用外部命令
  • 395
分享到

python调用外部命令

命令python 2023-01-31 06:01:52 395人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python调用外部命令os.system:  输出在终端上,捕捉不到os.popen:  只能捕捉到标准输出,捕捉不到标准错误输出os.popen2: 返回2个对象,一个是标准输入,一个是标准输出os.popen3: 返回3个对象,标准输

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)
<ipython-input-62-575484aab70a> in <module>()
----> 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,抛出异常,打印出来,捕捉到异常





--结束END--

本文标题: python调用外部命令

本文链接: https://www.lsjlt.com/news/190265.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python调用外部命令
    python调用外部命令os.system:  输出在终端上,捕捉不到os.popen:  只能捕捉到标准输出,捕捉不到标准错误输出os.popen2: 返回2个对象,一个是标准输入,一个是标准输出os.popen3: 返回3个对象,标准输...
    99+
    2023-01-31
    命令 python
  • python 执行外部命令
     在Python环境下,执行一条外部命令一般有这么几个: 1、os.system(command)或者os.popen(..........) 2、wx.Execute(command, syn=wx.EXEC_ASYNC, callbac...
    99+
    2023-01-31
    命令 python
  • Python 执行Shell 外部命令
    1、os.system()此方法执行的外部程序,会将结果直接输出到标准输出。os.system的返回结果为执行shell 的 $ 值。因此请执行没有输出结果的程序时适合使用此方法。如touch 、rm 一个文件等。In [1]: impor...
    99+
    2023-01-31
    命令 Python Shell
  • python 外部命令执行--OS
     Python 也可以通过os、subprocess执行外部shell命令对POSIX类型系统进行操作。  os 一个很强大的命令,可以通过os下的一些方法去执行shell命令,并且可以对对象执行完的标准输出、标准输入和标准错误输出进行操...
    99+
    2023-01-31
    命令 python OS
  • Python实现subprocess执行外部命令
    目录一、Python执行外部命令1、subprocess模块简介2、subprocess模块的遍历函数3、subprocess模块的Popen类(PyCharm)4、使用python自动安i装并启动mongodb一、...
    99+
    2022-06-03
    Python 执行外部命令
  • Go语言中调用外部命令的方法总结
    目录引子运行命令显示输出显示到标准输出输出到文件发送到网络保存到内存对象中输出到多个目的地运行命令,获取输出分别获取标准输出和标准错误标准输入环境变量检查命令是否存在封装总结引子 在...
    99+
    2022-11-11
  • Python执行外部命令subprocess的使用详解
    目录一、了解subprocess1、subprocess.run()方法2、Popen类二、补充os模块执行外部命令1、os.system()方法2、os.popen()用法一、了解subprocess s...
    99+
    2022-06-02
    Python执行外部命令 Python subprocess
  • Linux中的内置命令和外部命令
    本篇内容主要讲解“Linux中的内置命令和外部命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的内置命令和外部命令”吧!Linux的命令分为内部命令和外部命令:内部命令在系统启动时...
    99+
    2023-06-13
  • Java命令不是内部命令也不是外部命令解决方法
    有时我们安装好jdk后在cmd运行java命令会出现“javac不是内部命令或外部命令,也不是可运行的程序或批处理文件”的情况,这是因为没有配置环境变量或环境变量配置错误。下面我们来看一下配置java环境变量的方法:进入环境变量设置的方法,...
    99+
    2017-06-14
    java基础 Java
  • python调用调用Linux命令
    如何调用Linux命令下面代码演示了调用一个shell命令, 其中,命令的输出会存储到result变量中, 而命令的返回值,则存储到exitcode中,由此可见,调用shell命令还是很方便的:import commandsexitcode...
    99+
    2023-01-31
    命令 python Linux
  • Python调用Dos命令
    写了几个批处理,主要是一些Android调试命令,现在想用python来搞,感觉更酷一些吧。O(∩_∩)O~ 比如Ping命令: ping www.baidu.com 用python来做,主要是使用了python标准库中的os库。 参见P...
    99+
    2023-01-31
    命令 Python Dos
  • Python执行外部命令的方法有哪些
    这篇文章主要介绍“Python执行外部命令的方法有哪些”,在日常操作中,相信很多人在Python执行外部命令的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python执行外部命令的方法有哪些”的疑...
    99+
    2023-06-16
  • python部分常用命令
    python中文注释方法 在python编写代码的时候,避免不了会出现或是用到中文,这时候你需要在文件开头加上中文注释。如果开头不声明保存编码的格式是什么,那么它会默认使用ASKII码保存文件,这时如果你的代码中有中文就会出错了,即使你的...
    99+
    2023-01-31
    常用命令 python
  • win8命令提示符cmd命令失效(不是内部或外部命令)怎么办
      故障现象:   进入命令提示符状态后,不管执行什么DOS命令都提示:"XX不是内部或外部命令,也不是可运行的程序或批处理文件",如图:   原因分析:   此问题是某些软件修改了...
    99+
    2022-06-04
    命令 命令提示符 cmd
  • Java进程ProcessBuilder类的介绍及使用,ProcessBuilder调用外部程序执行shell命令Linux命令
    目录 ProcessBuilder类的介绍及使用 【前言】 【正文】 --构造方法-- --常用方法-- --使用技巧-- --调用本地Shell命令,实例-- 【总结】 【注意】 ProcessBuilder类的介绍及使用 【前言】 ...
    99+
    2023-09-12
    java 开发语言
  • python中调用dos命令
    本文是基于window系统下的调用dos命令,在centos下也类似 #encoding:utf-8 ''' Created on 2015年10月10日 @author: ZHOUMEIXU204 ''' import os impo...
    99+
    2023-01-31
    命令 python dos
  • python如何调用外部函数
    在python中调用外部函数的方法通过引用所在路径调用例:调用text文件中的pr(x,y)函数import syssys.path.append('D:/') //text文件路径import textif __name__=="__ma...
    99+
    2022-10-22
  • telnet不是内部或外部命令怎么办
    如果在Windows系统上使用telnet命令出现“telnet不是内部或外部命令”错误,可能是因为telnet客户端没有安装或未正...
    99+
    2023-09-21
    telnet
  • javac不是内部或外部命令怎么办
    这篇文章将为大家详细讲解有关javac不是内部或外部命令怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。解决方法:1、安装运行java的jdk;2、将“JAVA_HOME”配置路径写全,在CLASSP...
    99+
    2023-06-14
  • Win7系统CMD命令出错提示不是内部或者外部命令
      CMD命令在Win7系统中是很实用的,用户们可以通过CMD命令解决许多问题。不过在我们的使用过程中,CMD命令也是有可能会出现一些问题的,比如在CMD命令行中输入任何命令,都提示“不是内部或者外部命令,也...
    99+
    2023-06-11
    Win7 CMD 系统 命令 外部命令
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作