Python_57之subprocess模块

1、专门支持使用Python执行命令

call

import subprocess
ss=input('输入命令:')
subprocess.call(ss)
#subprocess.call(["ls","-l"],shell=False)#根据shell标志,来进行多个命令的组合书写
#subprocess.call(["ls -l"],shell=True)#根据shell标志,来进行多个命令的组合书写

输出结果————————————————————————————————————————————————这个时候没有用到print自动把结果输出了——————————————————————————————————————
输入命令:ping 10.208.12.52
���� Ping 10.208.12.52 ���� 32 �ֽڵ�����:
����ʱ��
����ʱ��
����ʱ��
����ʱ��
10.208.12.52 �� Ping ͳ����Ϣ:
���ݰ�: �ѷ��� = 4���ѽ��� = 0����ʧ = 4 (100% ��ʧ)��
import subprocess
ss=input('输入命令:')
ddd=subprocess.call(ss)
print (ddd)
输出———————————————————————————————ddd对应的是1 只是一个返回码,但是执行结过程还是无法赋值给变量—————————————————————————————————————

输入命令:ping 10.208.11.15

���� Ping 10.208.11.15 ���� 32 �ֽڵ�����:
����ʱ��
����ʱ��
����ʱ��
����ʱ��

10.208.11.15 �� Ping ͳ����Ϣ:
���ݰ�: �ѷ��� = 4���ѽ��� = 0����ʧ = 4 (100% ��ʧ)��
1

******************************************************************************************** 
import subprocess
ss='ping 10.208.15.20'
ddd=subprocess.check_call(ss)
print (ddd)
输出结果——————————————————————————这时候如果ddd=0不会输出异常,如果状态吗不为0则输出异常————————————————————————————————————————————————————————————————————

���� Ping 10.208.15.20 ���� 32 �ֽڵ�����:
����ʱ��
����ʱ��
����ʱ��
����ʱ��

10.208.15.20 �� Ping ͳ����Ϣ:
���ݰ�: �ѷ��� = 4���ѽ��� = 0����ʧ = 4 (100% ��ʧ)��
Traceback (most recent call last):
File "D:/Users/Administrator/PycharmProjects/untitled/venv/reqestut_mokuai/testsubprocess.py", line 8, in <module>
ddd=subprocess.check_call(ss)
File "C:\Program Files\Python36\Lib\subprocess.py", line 291, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'ping 10.208.15.20' returned non-zero exit status 1.

*************************************************************************************************************************************************************************

import subprocess
ss='ipconfig'
ddd=subprocess.check_call(ss)
print (ddd)
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————

Windows IP ����


��̫�������� ��������:

�����ض��� DNS ��׺ . . . . . . . :
�������� IPv6 ��ַ. . . . . . . . : fe80::29ad:1c79:cb08:4a6b%11
IPv4 ��ַ . . . . . . . . . . . . : 10.202.32.114
�������� . . . . . . . . . . . . : 255.255.255.128
Ĭ������. . . . . . . . . . . . . : 10.202.32.1
0

*****************************************************************************************************************************************

check_output()#反馈状态吗为0时表示

import subprocess
ss='ipconfig'
ddd=subprocess.check_output(ss)
print (ddd)
返回值————————————————————————————————————————————————————————————输出————如果状态吗是0,可以取到返回的执行结果是字节类型—如果状态吗是1,则抛出异常—————————————————————————————————————————————————

b'\r\nWindows IP \xc5\xe4\xd6\xc3\r\n\r\n\r\n\xd2\xd4\xcc\xab\xcd\xf8\xca\xca\xc5\xe4\xc6\xf7 \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3:\r\n\r\n \xc1\xac\xbd\xd3\xcc\xd8\xb6\xa8\xb5\xc4 DNS \xba\xf3\xd7\xba . . . . . . . : \r\n \xb1\xbe\xb5\xd8\xc1\xb4\xbd\xd3 IPv6 \xb5\xd8\xd6\xb7. . . . . . . . : fe80::29ad:1c79:cb08:4a6b%11\r\n IPv4 \xb5\xd8\xd6\xb7 . . . . . . . . . . . . : 10.202.32.114\r\n \xd7\xd3\xcd\xf8\xd1\xda\xc2\xeb . . . . . . . . . . . . : 255.255.255.128\r\n \xc4\xac\xc8\xcf\xcd\xf8\xb9\xd8. . . . . . . . . . . . . : 10.202.32.1\r\n'

**********************************************************************************************************************************************************************************************************************************************************************************

import subprocess
ss=subprocess.Popen(["mkdir","t1"],shell=False,cwd='/home/dev') #Popen 执行命令之前先到目录下 再执行命令
**********************************************************************************************************************************************************************************************************************************************************************************
import subprocess
obj=subprocess.Popen(["Python"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True)#stdin是写入的通道,stdout是写出的通道,stderr是输出错误的通道 universal_newlines=True是换行符通用
obj.stdin.write("print(123)\n")#向通道写入内容
obj.stdin.write("print(123)\n")
obj.stdin.write("print(123)\n")
obj.stdin.close()#通道关闭
cmd_out=obj.stdout.read()
obj.stdout.close()
cmd_error=obj.stderr.read()
obj.stderr.close()
print (cmd_out)
print (cmd_error)
输出
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
123
123456
123789
**********************************************************************************************************************************************************************************************************************************************************************************
管道读取的另一种方法
import subprocess
obj=subprocess.Popen(["Python"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True)#stdin是写入的通道,stdout是写出的通道,stderr是输出错误的通道
obj.stdin.write("print(123)\n")
obj.stdin.write("print(123456)\n")
obj.stdin.write("print(123789)")
obj.stdin.write("mkdir rfff")
out_error_list=obj.communicate()
print (out_error_list)
输出——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
('', ' File "<stdin>", line 3\n print(123789)mkdir rfff\n ^\nSyntaxError: invalid syntax\n')
8888888888888888888888888888888与下边的效果相同8888888888888888888888888888888888888888888888888888888888888
import subprocess
obj=subprocess.Popen(["Python"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True)#stdin是写入的通道,stdout是写出的通道,stderr是输出错误的通道
obj.stdin.write("print(123)\n")
obj.stdin.write("print(123456)\n")
obj.stdin.write("print(123789)")
obj.stdin.write("mkdir rfff")
obj.stdin.close()#通道关闭
cmd_out=obj.stdout.read()
obj.stdout.close()
cmd_error=obj.stderr.read()
obj.stderr.close()
print (cmd_out)
print (cmd_error)
输出——————————————————————————————————————————————————————————————————————

File "<stdin>", line 3
print(123789)mkdir rfff
^
SyntaxError: invalid syntax

**********************************************************************************************************************************************************************************************************************************************************************************
 

猜你喜欢

转载自www.cnblogs.com/beyondtring/p/9004293.html
今日推荐