socket实现在python中调用操作系统的命令(subprocess)
Posted LBC不认输
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket实现在python中调用操作系统的命令(subprocess)相关的知识,希望对你有一定的参考价值。
在python中调用操作系统的命令 import os import subprocess # r = os.popen(‘ipconfig‘) r = subprocess.Popen(‘ls‘,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)、 # subprocess.Popen(cmd,shell=True,subprocess.stdout,subprocess.stderr) # cmd : 代表系统命令 # shell = True 代表这条命令是 系统命令,告诉操作系统,将cmd当成系统命令去执行 # stdout 是执行完系统命令之后,用于保存结果的一个管道 # stderr 是执行完系统命令之后,用于保存错误结果的一个管道 stdout = r.stdout.read().decode(‘gbk‘) stderr = r.stderr.read().decode(‘gbk‘) print(‘正确的返回结果:‘,stdout) print(‘错误的返回结果:‘,stderr) print(‘错误的返回结果:‘,stderr) #保存变量的方法使得能得到两个错误的信息,否则只能得到一次错误的结果 #客户端发送一条命令用于调用服务器的系统命令 # 客户端发送要执行命令 # 服务器执行,执行完将结果返回给客户端 # 客户端拿到结果呈现到用户眼前 #server层 import socket import subprocess sk = socket.socket() sk.bind((‘127.0.0.1‘,8080)) sk.listen() conn,addr = sk.accept() while 1: cmd = conn.recv(1024).decode(‘utf-8‘) r = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) stdout = r.stdout.read() stderr = r.stderr.read() if stderr: conn.send(stderr) else: conn.send(stdout) conn.close() sk.close() #client层 import socket sk = socket.socket() sk.connect_ex((‘127.0.0.1‘,8080)) while 1: cmd = input(‘请输入一个命令>>>‘) sk.send(cmd.encode(‘utf-8‘)) #因为服务器是windows,执行的命令是GBK格式,所以传回来后需要进行解码,解码为GBK格式 result = sk.recv(102400).decode(‘gbk‘) print(result) sk.close()
以上是关于socket实现在python中调用操作系统的命令(subprocess)的主要内容,如果未能解决你的问题,请参考以下文章
使用python完成一个hello/hi的简单的网络聊天程序