Python之路35-subprocess模块和Python3中常用执行shell命令方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之路35-subprocess模块和Python3中常用执行shell命令方法相关的知识,希望对你有一定的参考价值。

import subprocess

#执行命令,返回命令执行状态 , 0 or 非0
retcode = subprocess.call(["free","-m"])    #返回值可判断执行是否正确,命令执行结果直接返回到屏幕

#执行命令,如果命令结果为0,就正常返回,否则抛异常
result = subprocess.check_call(["ls","-l"])

#执行命令,并返回结果,注意是返回结果,不是打印,下例结果返回给res
res = subprocess.check_output(["ls","-l"])

#若shell = true, 则shell 参数以字符串形式给出,否则,则以序列的形式给出

#python3执行shell命令的几种方式
#1.用os.system(cmd)   可以获取命令执行后的返回值,但是获取不了命令的输出内容

import os;
return_code=os.system(‘ls -la‘);
print(return_code);



#2.用os.popen(cmd)   可以获取命令的输出内容,但是获取不了命令执行后的返回值

import os;
import sys;

output=os.popen(‘ls -l‘);
out=output.readlines();
for i in out:
    print(i.strip());



#3.用subprocess

import os;
import sys;
import subprocess;
import codecs;

#可以直接将输出写入到文件
output_file=codecs.open(‘abc.txt‘,‘w‘,‘utf-8‘);
return_code=subprocess.call([‘ls‘,‘-l‘],stdout=output_file);
output_file.close();
print(return_code);

#也可以先将输出先保存为string变量,
output=subprocess.check_output([‘ls‘,‘-l‘]);    #如果命令执行的返回值不为0,则会抛出CalledProcessError的错误
print(output.decode(‘utf-8‘));

#再将string变量写入到文件
output_file=codecs.open(‘abc.txt‘,‘w‘,‘utf-8‘);
output_file.write(output.decode(‘utf-8‘));
output_file.close();


本文出自 “八英里” 博客,请务必保留此出处http://5921271.blog.51cto.com/5911271/1897550

以上是关于Python之路35-subprocess模块和Python3中常用执行shell命令方法的主要内容,如果未能解决你的问题,请参考以下文章

python之路---25 模块和包

python之路--模块和包

Python之路-模块和包

python之路——模块和包

python之路--模块和包--景丽洋

Python之路-模块