python大文件的上传

2023-10-29

python大文件的上传,下载是同样的套路,下面是简单的代码

server端代码

import socket
import json
import struct
buffer = 1024 #这里使用1024在上传视频的时候不容易出错,如果选择更大的数回出现错误
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
conn,addr = sk.accept()
head_len = conn.recv(4)
head_len = struct.unpack('i',head_len)[0]
head_bytes = conn.recv(head_len)
head = json.loads(head_bytes)
filesize = head['filesize']
with open(r'下载\%s'%head['filename'],mode='wb') as f: #注意这里文件路径是r,而且读写方式wb一定是bytes类型
    while True:
        if filesize >= buffer:
            content = conn.recv(buffer)
            f.write(content)
            filesize -= buffer
        else:
            content = conn.recv(filesize)
            f.write(content)
            break
conn.close()
sk.close()

client端代码

import socket
import os
import struct
import json
sk = socket.socket()
sk.connect(('127.0.0.1',8080))
buffer = 1024
head = {'filename':r'01 python fullstack s9day33 复习.mp4',
        'filepath':r'D:\python课程\day33',
        'filesize':None} #注意这里的文件路径和名称是r
filepath = os.path.join(head['filepath'],head['filename'])
filesize = os.path.getsize(filepath)
head['filesize'] = filesize
head_str = json.dumps(head)
head_bytes = head_str.encode('utf-8')
head_len = len(head_str)
head_len = struct.pack('i',head_len)
sk.send(head_len)
sk.send(head_bytes)
with open(filepath,mode='rb') as f:
    while True:
        if filesize >= buffer:
            content = f.read(buffer)
            sk.send(content)
            filesize -= buffer
        else:
            content = f.read(filesize)
            sk.send(content)
            break
sk.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python大文件的上传 的相关文章

随机推荐

  • 新天龙官网服务器更新消息,《新天龙八部》1月20日全服更新维护公告

    亲爱的玩家 大家好 为保证游戏运行的稳定性 提升整体服务质量 新天龙八部 游戏全部服务器 除测试服务器外 将于2020年1月20日7 00 9 00进行更新维护 维护后版本号升级为3 66 5201 如果在预定时间内无法完成维护内容 开机时
  • AcWing 420. 火星人

    人类终于登上了火星的土地并且见到了神秘的火星人 人类和火星人都无法理解对方的语言 但是我们的科学家发明了一种用数字交流的方法 这种交流方法是这样的 首先 火星人把一个非常大的数字告诉人类科学家 科学家破解这个数字的含义后 再把一个很小的数字
  • 多源迁移学习网络补充知识用于具有不可见故障的机器智能诊断

    摘要 当前基于深度迁移学习的故障诊断的大多数成功需要两个假设 1 源机器的健康状态集合应当与目标机器的健康状态集合重叠 2 目标机器样本的数量跨健康状态平衡 然而 这样的假设在工程场景中是不现实的 其中目标机器遭受在源机器中看不到的故障类型
  • 华硕主板已经开启VT-D虚拟化,但是进了win10还是CPU显示Hyper-V显示已禁用

    最近X宝看i5 8400的便宜好几百大洋 就入手一台当家里照片文档FTP服务器 系统win10装好 常用软件安装完成 准备来安装Hyper V了 在 程序和功能 里面的 Hyper V的虚拟机监控程序 是灰色的 老司机了 这难不倒我 一般都
  • CmakeList--gflags

    set GFLAGS LIBRARIES usr lib x86 64 linux gnu libgflags so
  • vue-cli3+electron出现白屏现象

    近期使用electron vue cli3 0开发了一个跨平台项目 进行登录后路由跳转出现白屏现象 原因在于路由使用了history模式 history模式在electron环境中会出现 路由跳转的白屏现象 因此 需要将histroy模式修
  • deepin自带wine使用方法_忘记Windows!国产深度v20正式版来袭,永久免费使用!

    最近win10系统更新出现各种bug 真是让人头痛 但是 就在我们在win10漩涡中晕头转向的时候 很多朋友都没有留意到 我们的国产操作系统 deepin 20正式版 在9月份已经正式发布 而直至10月份 距离deepin 20正式版发布一
  • Python实现邮箱自动发送代码(包含正文图片、附件文件)

    以下为源码 仅供大家学习 抄送实现是同一封邮件发送2次 如想实现发送人和抄送人显示中文名字 在list集合中添加中文名字即可 旭旭同学测试 lt 12341324 qq com gt 测试 lt 1341 qq com gt 不足之处请大家
  • Qt 多线程/多窗口 参数传递

    文章目录 注意 传递 Qt 支持的数据类型 主线程 gt 子线程 子线程 gt 主线程 主窗口 gt 子窗口 子窗口 gt 主窗口 传递自己定义的数据类型 第一步 定义数据类型 第二步 在 main 函数中注册该数据类型 第三步 开始传参数
  • 博客同时部署Github和Coding page

    前期 注册账号不讲了 现在都是以团队注册 注册完后 记得到团队设置里面 找到实名认证 在初次使用静态网站服务前 需要团队拥有者完成实名认证 然后需要在个人设置里绑定邮箱和设置密码 顺便把公钥添加下 创建一个项目 然后点进这个项目中 部署静态
  • phpstorm 配置apache路径

    初学php 如何自动将phpstorm中的文件部署到设定好的目录中 用了 我的路径是apache里面配置的路径ServerRoot
  • CentOS 7二进制文件安装nodejs

    根据自己的经验编写在linux系统CentOS下安装nodejs的过程 本篇介绍二进制文件直接解压安装的过程 方法 步骤 1 如图所示 在nodejs官网下载压缩包 根据自己的系统是32位还是64位选择压缩包 别选错类型哦 2 安装前要先安
  • sklearn——加载数据集

    1 通用数据集 API 根据所需数据集的类型 有三种主要类型的数据集API接口可用于获取数据集 方法一 loaders 可用来加载小的标准数据集 在玩具数据集中有介绍 方法二 fetchers 可用来下载并加载大的真实数据集 在真实世界中的
  • 无法生成“F:\system voiume information”下的常规文件夹列表拒绝访问

    1 产生问题 将桌面从属性 位置直接改到了F盘 F盘上的东西全显示在桌面上 2 解决问题 1 点击还原默认值后显示要下图 选择否 win10可以用 然后再次移动到你需要的位置即可 2 win7可以用 win10并没有用成 1 按win r
  • 图的创建和遍历

    图的定义 由顶点的有穷非空集合和顶点之间边的集合组成的数据类型 图的表示 G V E G表示一个图 V是图G的顶点集合 E为图G的边的集合 图的逻辑结构 多对多 图的存储结构 邻接矩阵 邻接表 十字链表 邻接多重表 图的一些无聊术语 顶点i
  • 多源bfs

    这是 LeetCode 上的 1162 地图分析 难度为 中等 与 单源最短路 不同 多源最短路 问题是求从 多个源点 到达 一个 多个汇点 的最短路径 在实现上 最核心的搜索部分 多源 BFS 与 单源 BFS 并无区别 并且通过建立 虚
  • 日常管理的五条小建议

    原文作者 Johanna Rothman著作 门后的秘密 卓越管理的故事 有时候 你需要为工作理一理头绪 你需要给自己一些喘息的机会 停下来 思考一会儿 这里有一些小建议 可以帮助你处理好日常管理工作 计划并安排一对一会谈 做管理意味着你要
  • 基于Hadoop的Knn算法实现

    Knn算法的核心思想是如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别 则该样本也属于这个类别 并具有这个类别上样本的特性 该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别 Knn方法在类
  • Qt配置设置,修改全文字体大小颜色,背景颜色

    这是完成时的demo 选择所需 点击确认修改 全局修改 效果第二张图 在没有点击确认修改时 字体等按钮的改变只会在文本框里面体现出来 点击确认才会修改全局的东西 点击恢复默认时 字体字号颜色控件全部恢复初始状态 当点击确认修改 全局才会改为
  • python大文件的上传

    python大文件的上传 下载是同样的套路 下面是简单的代码 server端代码 import socket import json import struct buffer 1024 这里使用1024在上传视频的时候不容易出错 如果选择更