资讯专栏INFORMATION COLUMN

python执行shell命令的方法

hightopo / 2389人阅读

摘要:执行命令的方法模块方式说明这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。返回值是依赖于系统的,直接返回系统的调用返回值,所以和是不一样的。并能够获得新建进程运行的返回状态。使用模块的目的是替代等旧的函数或模块。

python执行shell命令的方法 os模块

os.system方式:

import os
os.system("top")
os.system("cat /proc/cpuinfo")

说明

这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。
返回值是依赖于系统的,直接返回系统的调用返回值,所以windows和linux是不一样的。
强调的一点是,不支持参数,不支持管道

os.open方式:

import os
output = os.popen("df")
print output.read()   #如果命令自身无报错,则返回正确的值

说明

popen方法通过p.read()获取终端输出,而且popen需要关闭close().
当执行成功时,close()不返回任何值,失败时,close()返回系统返回值..
可见它获取返回值的方式和os.system不同
强调的一点是,不支持参数,不支持管道
commands模块

使用commands模块的getoutput方法,这种方法同popend的区别在于popen返回的是一个文件句柄,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些。
主要方法:

commands.getstatusoutput(cmd) 返回(status, output)

commands.getoutput(cmd) 只返回输出结果

commands.getstatus(file) 返回ls -ld file的执行结果字符串,调用了getoutput,不建议使用此方法

a = commands.getoutput("ps -ef ")
b = commands.getstatusoutput("vmstat") 
subprocess模块

说明

使用subprocess模块能够创建新的进程。
能够与新建进程的输入/输出/错误管道连通。
并能够获得新建进程运行的返回状态。
使用subprocess模块的目的是替代os.system()、os.popen()、commands.等旧的函数或模块。

subprocess.call(["some_command","some_argument","another_argument_or_path")

from subprocess import call
call(["ls","-l","/boot","/sys"])    #
call("ls -a /",shell=True)

subprocess.Popen(command,shell=True)

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
参考博客

https://blog.csdn.net/longerz...

https://python.freelycode.com...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10783.html

相关文章

  • python执行shell命令方法

    摘要:执行命令的方法模块方式说明这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。返回值是依赖于系统的,直接返回系统的调用返回值,所以和是不一样的。并能够获得新建进程运行的返回状态。使用模块的目的是替代等旧的函数或模块。 python执行shell命令的方法 os模块 os.system方式: import os os.system(top) os.system(cat /proc...

    PumpkinDylan 评论0 收藏0
  • 靶机DC-8(详细渗透,适合新手渗透)

    摘要:按照网上的说法,代码保存后会执行代码,这应该是在靶机上已经执行了代码,只是在后台不会显示出来。 目录 靶机DC-8 (详细渗透,适合新手渗透)0x01靶机描述0x...

    greatwhole 评论0 收藏0
  • Vim 编辑器与 Python 命令脚本

    摘要:文本编辑器编辑器的三种模式命令模式末行模式和编辑模式命令模式控制光标移动,可对文本进行复制粘贴删除和查找等工作。表示从环境变量中查找解释器的位置,再调用该路径下的解释器来执行脚本。 Vim 文本编辑器 Vim 编辑器的三种模式——命令模式、末行模式和编辑模式 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。 输入模式:正常的文本录入。 末行模式:保存或退出文档,以及...

    niuxiaowei111 评论0 收藏0
  • Vim 编辑器与 Python 命令脚本

    摘要:文本编辑器编辑器的三种模式命令模式末行模式和编辑模式命令模式控制光标移动,可对文本进行复制粘贴删除和查找等工作。表示从环境变量中查找解释器的位置,再调用该路径下的解释器来执行脚本。 Vim 文本编辑器 Vim 编辑器的三种模式——命令模式、末行模式和编辑模式 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。 输入模式:正常的文本录入。 末行模式:保存或退出文档,以及...

    bergwhite 评论0 收藏0
  • Jupyter Notebook之初识及入门

    摘要:所以,应该直接了当的安装,其中也会自动安装上,作为其运行的。这只是一开始,之后还有里各种找不到外部安装的的情况。终于,意识到这些方法都是错误的思路。这才知道原来是无法识别。 为什么要用IPython/Jupyter? python里面调试确实有点烦恼,尤其是在vim里,想要尝试一些简单的编码问题,实在是有点麻烦,不想到命令行模式一行一行执行,也不想再新建一个文件测试一个简单的功能。 而...

    plus2047 评论0 收藏0

发表评论

0条评论

hightopo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<