位置: IT常识 - 正文

python怎么传送文件(python文件间传递参数)

编辑:rootadmin

推荐整理分享python怎么传送文件(python文件间传递参数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python传输图片最好的办法,python文件怎么发给别人运行,python数据怎么传递给html,python 传送文件,python 传输文件,python怎么传文件,python 传送文件,python怎么传文件,内容如对您有帮助,希望把文章链接给更多的朋友!

在python中传送文件的方法:1、将报头转换成字符串【json.dumps】, 再将字符串的长度打包;2、发送报头长度和报头内容,然后放真实内容;3、将报头长度解压,得到头部信息的大小,再接收头部信息,反序列化即可

python怎么传送文件(python文件间传递参数)

思路:

# 先将报头转换成字符串(json.dumps), 再将字符串的长度打包 # 发送报头长度,发送报头内容,最后放真实内容 # 报头内容包括文件名,文件信息,报头 # 接收时:先接收4个字节的报头长度, # 将报头长度解压,得到头部信息的大小,在接收头部信息, 反序列化(json.loads) # 最后接收真实文件

服务端

#!/usr/bin/envpython#-*-coding:utf-8-*-#@File:文件传输-服务端.py#@Software:PyCharmfromsocketimport*importstructimportjsonimportostcp_server=socket(AF_INET,SOCK_STREAM)ip_port=(('127.0.0.1',8080))buffsize=1024#端口的重复利用tcp_server.setsockopt(SOL_SOCKET,SO_REUSEPORT,1)tcp_server.bind(ip_port)tcp_server.listen(5)print('还没有人链接')whileTrue:'''链接循环'''conn,addr=tcp_server.accept()print('链接人的信息:',addr)whileTrue:ifnotconn:print('客户端链接中断')break'''通信循环'''filemesg=input('请输入要传送的文件名加后缀>>>').strip()filesize_bytes=os.path.getsize(filemesg)#得到文件的大小,字节filename='new'+filemesgdirc={'filename':filename,'filesize_bytes':filesize_bytes,}head_info=json.dumps(dirc)#将字典转换成字符串head_info_len=struct.pack('i',len(head_info))#将字符串的长度打包#先将报头转换成字符串(json.dumps),再将字符串的长度打包#发送报头长度,发送报头内容,最后放真是内容#报头内容包括文件名,文件信息,报头#接收时:先接收4个字节的报头长度,#将报头长度解压,得到头部信息的大小,在接收头部信息,反序列化(json.loads)#最后接收真实文件conn.send(head_info_len)#发送head_info的长度conn.send(head_info.encode('utf-8'))#发送真是信息withopen(filemesg,'rb')asf:data=f.read()conn.sendall(data)print('发送成功')

客户端

#!/usr/bin/envpython#-*-coding:utf-8-*-#@File:文件传输_客户端.py#@Software:PyCharmfromsocketimport*importstructimportjsonimportosimportsysimporttimefrom进度条importprocess_bartcp_client=socket(AF_INET,SOCK_STREAM)ip_port=(('127.0.0.1',8080))buffsize=1024tcp_client.connect_ex(ip_port)print('等待链接服务端')whileTrue:head_struct=tcp_client.recv(4)#接收报头的长度,ifhead_struct:print('已连接服务端,等待接收数据')head_len=struct.unpack('i',head_struct)[0]#解析出报头的字符串大小data=tcp_client.recv(head_len)#接收长度为head_len的报头内容的信息(包含文件大小,文件名的内容)head_dir=json.loads(data.decode('utf-8'))filesize_b=head_dir['filesize_bytes']filename=head_dir['filename']#接受真的文件内容recv_len=0recv_mesg=b''old=time.time()f=open(filename,'wb')whilerecv_len<filesize_b:percent=recv_len/filesize_bprocess_bar(percent)iffilesize_b-recv_len>buffsize:recv_mesg=tcp_client.recv(buffsize)f.write(recv_mesg)recv_len+=len(recv_mesg)else:recv_mesg=tcp_client.recv(filesize_b-recv_len)recv_len+=len(recv_mesg)f.write(recv_mesg)print(recv_len,filesize_b)now=time.time()stamp=int(now-old)print('总共用时%ds'%stamp)f.close()

进度条

#!/usr/bin/envpython#-*-coding:utf-8-*-#@File:进度条.py#@Software:PyCharmimportsysimporttimedefprocess_bar(precent,width=50):use_num=int(precent*width)space_num=int(width-use_num)precent=precent*100#第一个和最后一个一样梯形显示,中间两个正确,但是在python2中报错#print('[%s%s]%d%%'%(use_num*'#',space_num*'',precent))#print('[%s%s]%d%%'%(use_num*'#',space_num*'',precent),end='\r')print('[%s%s]%d%%'%(use_num*'#',space_num*'',precent),file=sys.stdout,flush=True,end='\r')#print('[%s%s]%d%%'%(use_num*'#',space_num*'',precent),file=sys.stdout,flush=True)#foriinrange(21):#precent=i/20#process_bar(precent)#time.sleep(0.2)

本文链接地址:https://www.jiuchutong.com/zhishi/310693.html 转载请保留说明!

上一篇:织梦cms如何给TAG加链接,去掉TAG字数限制(织梦怎么新建页面)

下一篇:九步就可入门Python装饰器(九步功法)

  • 一般纳税人附加税优惠政策2023
  • 自行申报需补缴税款时征收滞纳金吗
  • 发票能减多少税
  • 出口销售收入要交增值税吗
  • 小规模纳税人免税账务处理
  • 个体户开运输发票怎么开
  • 境内公司取得境外收入
  • 产品入库实际成本是什么凭证
  • 会计凭证的保管期限为多少
  • 无形资产和固定资产的折旧
  • 电子产品委外加工
  • 法人收到票据用什么抵扣
  • 未计提坏账准备金额在哪个科目
  • 消费税的征收方式是代收代缴
  • 增值税专票电话号码错了有关系吗
  • 年度汇算清缴怎么填写
  • 一般纳税人开技术服务费
  • 中标服务费直接按开票金额付款吗
  • 什么是简易征收办法征收增值税
  • 汽车配件税收分类
  • 转账支票可不可以挂失止付
  • 其他法律依据
  • 工会发放慰问品总金额超过多少需要比价
  • 影视行业如何盈利
  • 税务局查到发票有问题
  • 其他应付款挂多少有风险
  • 中国电信服务
  • 生产成本中的电费计入制造费用吗
  • 财务都干些什么
  • 营业外收入冲减销售费用
  • 股东向公司借款协议书范本
  • hdaudpropshortcut.exe是什么进程 作用是什么 hdaudpropshortcut进程查询
  • 城市赚钱项目
  • jetson nano nvidia-smi
  • laravel php
  • php autoload用法
  • javaweb入门简单小项目
  • vue3 安装
  • ps大型文件储存位置在哪
  • 在建工程业务核算
  • 石油预付款发票怎么开
  • 按月计提固定资产折旧算收入吗
  • 给客户维修设备更换配件怎么开票
  • 织梦网站怎么添加关键词
  • 网站的首页文件名是什么
  • 如何检查文件是否有毒
  • 小企业如何计提折旧
  • 实收资本认缴怎么做账,要做账吗
  • 用友u8固定资产减少怎么撤销
  • 购进交通运输服务可以抵扣
  • 其他应收款科目代码
  • 企业的承兑汇票会计分录
  • 资本公积和盈余公积是什么意思
  • 加盟费明细
  • 工程收到款项会计分录
  • 进口设备 退税
  • 物业公司预收的物业费怎么做账
  • 公司应该怎么记账
  • 进项税有什么相关要求
  • 固定资产清理账户借方的核算内容包括
  • 罚金和罚款的区别怎么记
  • mac上mysql安装
  • freebsd重启命令
  • 控制面板中的添加和删除在哪里
  • win8系统无线网络图标不见了
  • unable to boot - please use a kernel appropriate for your cpu的解决方法
  • linux充当虚拟内存的是哪个分区
  • nodejs开发博客
  • 简单介绍一下自己
  • 深入理解javascript特性.pdf
  • unity获取物体的位置
  • js 入门
  • 如何用python编写脚本
  • android基本控件使用方法
  • python自动化监控
  • 如何开通税务系统
  • PLC交通信号灯控制程序设计
  • 出口退税出现预缴怎么办
  • 2021年留抵退税可以退2019年的吗
  • 投资损失属于所得税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设