模块介绍(代码片段)

liketimes liketimes     2023-01-26     560

关键词:

subprocess模块

它是可以远程操作主机,模拟shell命令

‘dir‘是windows上查看任务的命令  

import subprocess
obj = subprocess.Popen(dir, shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)
#Popen是模拟cmd命令,‘dir‘是windows上查看任务的命令,shell=True是指可以用shell命令了, 输出和错误,放到管道(PIPE)里
# print(obj.stdout.read().decode(‘gbk‘)) #打印输出的内容
# print(obj.stderr.read().decode(‘gbk‘)) #打印错误的内容
res = obj.stdout.read() + obj.stderr.read() #错误和输入放到一起给变量res
print(res.decode(gbk)) #打印res

在linux里可以创建python脚本,写入

import subprocess
obj = subprocess.Popen(ls;lsblk, shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)
#Popen是模拟cmd命令,‘dir‘是windows上查看任务的命令,shell=True是指可以用shell命令了, 输出和错误,放到管道(PIPE)里
# print(obj.stdout.read().decode(‘utf-8‘)) #打印输出的内容
# print(obj.stderr.read().decode(‘utf-8‘)) #打印错误的内容
res = obj.stdout.read() + obj.stderr.read() #错误和输入放到一起给变量res
print(res.decode(utf-8)) #打印res

 socket模块

服务端步骤:

1、socket创建一个套接字

2、bind绑定ip和port

3、listen使套接字变为可以被动连接

4、accept等待客户端的连接

5、recv/send接收发送数据

import socket #导入模块
server = socket.socket()#创建实例,传给server,默认TCPIP ipv4
server.bind((0.0.0.0, 8888))#0000代表暴露所有IP,或者冒号里边空着,也可以输入指定IP
server.listen(5)#监听最大5个链接
print(等待电话。。。)
conn, addr = server.accept()#链接和addr需要分别赋值,等待客户端连接,没有链接就等待
print(电话来了。。。)
#服务器接收消息
data = conn.recv(1024) #接收消息,大小为1024
print(data.decode(utf-8))
#服务器发送消息
nfo = input(===>:)
conn.send(info.encode(utf-8))

客户端步骤:

1、创建套接字

2、连接服务器

3、发送数据,最大接收1024字节

4、关闭套接字

import socket
client = socket.socket()
client.connect((localhost, 8888))#如果是远程链接要写IP
#客户发送消息
info = input(===>:)
client.send(info.encode(utf-8))
#客户接收消息
data = client.recv(1024)
print(data.decode(utf-8))

先运行客户端,进入等待链接,然后运行服务端链接,输入聊天内容,回车发送,切换到客户端,回复收到的消息,这样就完成了聊天的过程,但是一人说一句后,我们看到程序结束了,那我们没聊够怎么办,对,加个循环。

我们在“服务器接收消息”和“客户端发送消息”之前加入while True:

并且下方整体缩进。

import socket #导入模块
server = socket.socket()#创建实例,传给server,默认TCPIP ipv4
server.bind((0.0.0.0, 8888))#0000代表暴露所有IP,或者冒号里边空着,也可以输入指定IP
server.listen(5)#监听最大5个链接
print(等待电话。。。)
conn, addr = server.accept()#链接和addr需要分别赋值,等待客户端连接,没有链接就等待
print(电话来了。。。)
#服务器接收消息
while True:
    data = conn.recv(1024) #接收消息,大小为1024
    print(data.decode(utf-8))
    #服务器发送消息
    info = input(===>:)
    conn.send(info.encode(utf-8))
import socket
client = socket.socket()
client.connect((localhost, 8888))#如果是远程链接要写IP
#客户发送消息
while True:
    info = input(===>:)
    client.send(info.encode(utf-8))
    #客户接收消息
    data = client.recv(1024)
    print(data.decode(utf-8))

这样我们就可以尽情的发送消息了

 技术分享图片技术分享图片

不过,当我们什么也不输入那么,会发现程序卡住了,再输入的内容(酷酷酷酷酷),也无法发送了,针对此,我们再原代码的基础上,客户端和服务端的发送条件加入为空循环

技术分享图片技术分享图片

那么运行后,输入为空回车,将会重新上输入

 技术分享图片

这个时候我们发现,客户端没有发消息的话,那么服务端将一直等待,无法发送,整个程序处在半双工的情况下,所以我们要改成全双工,可以自由发送,那么就需要创建函数进程了

服务端:

import socket 
import threading
server = socket.socket()
server.bind((0.0.0.0, 8888))
server.listen(5)
print(等待电话。。。)
conn, addr = server.accept()
print(电话来了。。。)
def recv():
    while True:
        # 服务器接收消息
        data = conn.recv(1024) 
        print(data.decode(utf-8))
def send():
    while True:
        # 服务器发送消息
        info = input(===>:)
        if not info:continue
        conn.send(info.encode(utf-8))
t1 = threading.Thread(target=recv)
t2 = threading.Thread(target=send)
t1.start()
t2.start()

客户端:

import socket
import threading
client = socket.socket()
client.connect((localhost, 8888))
def send():
    while True:
        # 客户发送消息
        info = input(===>:)
        if not info:continue
        client.send(info.encode(utf-8))
def recv():
    while True:
        #客户接收消息
        data = client.recv(1024)
        print(data.decode(utf-8))

t1 = threading.Thread(target=send)
t2 = threading.Thread(target=recv)
t1.start()
t2.start()

到此,一个聊天程序就基本成型了

技术分享图片技术分享图片

进阶修炼:链接Linux,模拟远程控制

import socket
import subprocess
import threading
server = socket.socket()
server.bind((‘‘, 8888))
server.listen(5)
print(等待电话.....)
conn, addr = server.accept()
print(电话来了......)
while True:
    data = conn.recv(10240)
    cmd = subprocess.Popen(data.decode(utf-8),
                           shell=True,
                           stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE)
    stdout = cmd.stdout.read()
    stderr = cmd.stderr.read()
    conn.send(stdout + stderr)

链接成功后,客户端输入的命令,可以得到相应的反馈结果 

如:输入ls -l

技术分享图片

 例:通过读写复制文件

with open(r?C:Users逸轩Desktopw.txt‘, rb)as f:#二进制读
    data = f.read()
with open(ra.txt, wb)as f:#二进制写
    f.write(data)

 

模块介绍(代码片段)

一,模块介绍 1.1什么是模块?一个函数封装一个功能,比如现在有一个软件,不可能将所有程序都写入一个文件,所以咱们应该分文件,组织结构要好,代码不冗余,所以要分文件,但是分文件,分了5个文件,每个文件里... 查看详情

模块介绍(代码片段)

subprocess模块它是可以远程操作主机,模拟shell命令‘dir‘是windows上查看任务的命令 importsubprocessobj=subprocess.Popen(‘dir‘,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)#Popen是模拟cmd命令,‘dir‘是windows上查看任务的命令,shel 查看详情

selectors模块介绍(代码片段)

importselectors#python封装的一个IO多路复用的模块,会根据系统的不同而选择不同的方法(select/epoll/poll)fromsocketimport*sel=selectors.DefaultSelector()#首先DefaultSelector()实例化一个对象defaccept(sock,mask):\'\'\'当有连接请求时,sock发生了变化,执... 查看详情

ansible常用模块介绍(代码片段)

ansible常用模块介绍1.commandmodules选项:chdir在运行命令之前,先切换到指定目录:[[email protected]~]#ansibleweb-mcommand-a"ls-lchdir=/tmp"192.168.1.21|SUCCESS|rc=0>>total168drwx------2rootroot4096Sep2009:33ansible_U 查看详情

超级账本cryptogen与configtxgen模块介绍(代码片段)

目录1.cryptogen模块1.1命令介绍1.2生成证书1.2.1生成模板配置文件1.2.2生成证书2.configtxgen模块2.1configtxgen命令介绍2.2修改配置文件2.3配置信息介绍2.4生成创世块2.5生成通道文件2.6更新锚节点最后1.cryptogen模块配置文件以及证书生成1.1... 查看详情

ansible------ansible概述,搭建,常用模块介绍(代码片段)

目录一.Ansible概述二.Ansible环境安装部署三.Ansible命令行模块1.command模块2.shell模块3.cron模块4.user模块5.group模块6.copy模块7.file模块8.hostname模块9.ping模块10.yum模块11.service/systemd模块12.script模块13.setup模块一.Ansible概述Ansible是一个基于P... 查看详情

超级账本fabric层次结构以及核心模块的介绍(代码片段)

目录1.结构介绍2.核心代码3.核心模块3.1peer系统模块3.2order系统模块3.3cryptogen工具模块3.4configtxgen工具模块3.5configtxlator工具模块最后1.结构介绍包名称作用bccsp加密标准以及算法的实现,包括加密、签名、验签服务bddtestsbdd测试... 查看详情

25-1request模块介绍(代码片段)

requests模块-基于如下5点展开requests模块的学习什么是requests模块requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。为什么... 查看详情

modstartcms模块开发介绍(代码片段)

在开发模块之前,请在模块市场自行安装《开发示例程序》,该示例中涵盖了几乎所有模块开发规范和技巧。开发示例程序: https://modstart.com/m/Demo(opensnewwindow)开发示例程序会不断更新,请随时查看最新的开发示... 查看详情

python基础(二十六):模块和包简单介绍(代码片段)

文章目录模块和包简单介绍一、模块1、导入模块2、制作模块3、模块定位顺序4、__all__二、包1、制作包2、导入包三、总结模块和包简单介绍一、模块Python模块(Module),是⼀个Python文件,以.py结尾,包含了Python对象定义... 查看详情

进度条模块tqdm介绍(代码片段)

tqdm安装pipinstalltqdm代码示例:fromtqdmimporttqdmtotal=10000#总迭代次数loss=totalwithtqdm(total=total,desc="进度条")aspbar:foriinrange(total):loss-=1pbar.set_postfix('loss 查看详情

进度条模块tqdm介绍(代码片段)

tqdm安装pipinstalltqdm代码示例:fromtqdmimporttqdmtotal=10000#总迭代次数loss=totalwithtqdm(total=total,desc="进度条")aspbar:foriinrange(total):loss-=1pbar.set_postfix('loss 查看详情

python之模块(代码片段)

模块即一推代码的集合来实现某个功能,使用时直接调用,甚是方便。模块又分为三种自定义模块内置模块第三方模块下面就来介绍介绍什么是内置模块及如何去使用它和内置模块的好处。使用模块模块前首先导入该模块,才能... 查看详情

requests模块参数介绍(代码片段)

调用关系requests.get()requests.post()requests.put()requests.request(‘post‘) get请求requests.get( url=‘xxx‘, params=‘k1‘:‘v1‘,‘nid‘:888#get传参,在url上进行传参的 cookies=, headers=,)#http://www.baidu.com?k 查看详情

concurrent.futures模块(代码片段)

1.concurrent.futures模块介绍2.ThreadPoolExecutor线程池使用3.ProcessPoolExecutor进程池使用  1.concurrent.futures模块介绍1#介绍2concurrent.futures模块提供了高度封装的异步调用接口3ThreadPoolExecutor:线程池,提供异步调用4ProcessPoolExecutor 查看详情

对于模块化简单介绍(代码片段)

...。好处a.  可维护性1、灵活架构,焦点分离2、方便模块间组合、分解3、方便单个模块功能调试、升级4、多人协作互不干扰b.  可复用性c .可实现按需加载缺点:性能损耗1、系统分层,调用链会很长2、模块间发送... 查看详情

numpy模块的简单介绍(代码片段)

importnumpyasnpret=np.arange(3)print(ret)"""运行结果[012]"""importnumpyasnpret=np.array([1,2,3,4])print(ret)"""运行结果[1234]"""importnumpyasnpret=np.ones(5)print(ret)ret2=np.zeros(7)print(ret2)ret3=ret.astyp 查看详情

响应式布局介绍(代码片段)

1、模块中内容:挤压(拉)布局不变 2、模块中内容:换行铺平 3、模块内容:删减(增加) 4、模块位置变换(布局改变) 5、模块展示方式改变:隐藏(展开)(布局改变&#x... 查看详情