用python程序发送文件(python实例二十六)

目录

1.认识Python

2.环境与工具

2.1 python环境

2.2 Visual Studio Code编译

3.文件上传

3.1 代码构思

3.2 服务端代码

 3.3 客户端代码

 3.4 运行结果

4.总结


1.认识Python

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字或标点符号,它具有比其他语言更有特色的语法结构。

2.环境与工具

2.1 python环境

在Windows上使用命令行窗口查看所安装的python版本

python --version

2.2 Visual Studio Code编译

Visual Studio Code是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和Git 版本控制系统。

3.文件上传

3.1 代码构思

建立一个文件上传程序,服务端通过IP:端口上传本地文件到服务器,然后客户端接收,使用socket套接字对象连接,用TCP协议传输信息。

3.2 服务端代码

服务端:搭建一个TCP服务器,上传文件。

import socket
import structdef send_file(filename, host='127.0.0.1', port=9999):try:# 创建一个 TCP/IP 套接字socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)socket_server.bind((host, port))socket_server.listen()print(f"服务端开始监听 {host}:{port}...")while True:# 链接socket_conn, addr = socket_server.accept()print(f"Connected by {addr}")try:with open(filename, 'rb') as f:text_content = f.read()txt_len = len(text_content)# 发送文件长度socket_conn.send(struct.pack('i', txt_len))# 文件信息socket_conn.send(text_content)print(f"Sent {filename} ({txt_len} bytes) to {addr}")except FileNotFoundError:print(f"File {filename} 没有找到。")socket_conn.send(struct.pack('i', 0))except Exception as e:print(f"Error: {e}")finally:socket_conn.close()print(f"链接 {addr} 已关闭。")except Exception as e:print(f"错误: {e}")finally:socket_server.close()print("服务端关闭。")if __name__ == '__main__':send_file('./pythonProject/1.txt')                #文件路径

 3.3 客户端代码

客户端:客户端代码与服务器建立 TCP 连接,接收文件并保存该文件。

import socket
import structdef receive_file(filename, host='127.0.0.1', port=9999):try:# 创建一个 TCP/IP 套接字client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client_socket.connect((host, port))print(f"连接到 {host}:{port}")# 获取文件长度txt_len = struct.unpack('i', client_socket.recv(4))[0]print(f"获得 {txt_len} bytes")if txt_len == 0:print(f"没有获取到文件,服务端可能不存在")return# 打开文件,并进行写操作with open(filename, 'wb') as fp:recv_len = 0while recv_len < txt_len:recv_txt = client_socket.recv(1024)recv_len += len(recv_txt)fp.write(recv_txt)print(f"获得 {recv_len} bytes. 文件: {filename} 写入成功.")except Exception as e:print(f"Error: {e}")finally:client_socket.close()print("客户端关闭。")if __name__ == '__main__':receive_file('1.txt')                #接收的文件保存路径与名称

 3.4 运行结果

首先运行服务端代码打开,然后运行客户端代码用于接收文件。

4.总结

此程序呈现出了局域网内文件传输的典型示例,方便大家理解局域网内文件传输的底层逻辑。

你也快来试试吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++图网结构算法

目录 一.迪杰斯特拉算法&#xff08;dijkstra&#xff09; 1.实现原理&#xff1a; 2.代码实现&#xff1a; 3.例题&#xff1a; 二.spfa算法&#xff1a; 1.实现原理&#xff1a; 2.代码实现&#xff1a; 3.例题&#xff1a; 三.贝尔曼福特&#xff08;bellman_ford&…

【嵌入式硬件】快衰减和慢衰减

1.引语 在使用直流有刷电机驱动芯片A4950时,这款芯片采用的是PWM控制方式,我发现他的正转、反转有两种控制方式,分别是快衰减和慢衰减。 2.理解 慢衰减:相当于加在电机(感性原件)两端电压消失,将电机两端正负短接。 快衰减:相当于加在电机(感性原件)两端电压消失,将电机…

AcWing-差分矩阵

insert函数影响范围&#xff0c;在b差分数组这样操作影响到是a里面的&#xff0c;所以下图的矩阵表示的是a数组 b[x1][y1]c;会导致a里面仅绿色范围的a[i][j]c b[x1][y21]-c;会导致a里面仅黄色范围的a[i][j]-c b[x21][y1]-c;会导致a里面仅蓝色范围的a[i][j]-c b[x21][y21]c;会导…

什么情况下的网站要使用CDN加速呢?

CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。 CDN的通俗理解就是网站加速&#xff0c;CPU均衡负载&#xff0c;可以解决跨运营商&#xff0c;跨地区&#xff0c;服务器负载能力过低&#xff0c;带宽过少等带来的网站打开速度慢等问题。 原理就是在客户端…

Java聚合快递系统对接云洋系统快递小程序系统源码

&#x1f680; "聚合快递系统"无缝对接云洋系统&#xff0c;快递小程序新体验&#xff01;&#x1f4e6; &#x1f69a; 开篇&#xff1a;快递管理新纪元&#xff0c;一键接入云洋系统&#xff01; 你是否还在为繁琐的快递管理而头疼&#xff1f;多个快递公司账号切…

新手必备:iPhone新机官网验机流程详解

目录 一、准备工作 二、外包装检查 三、序列号查询 四、开箱验机 五、开机验机 六、功能检测 七、售后服务验证 八、总结 一、准备工作 检查包裹&#xff1a;确保快递包裹完好无损。准备录像设备&#xff1a;使用另一台设备录制整个验机过程&#xff0c;以防日后发生纠…

无人机公司销售需要什么资质

国家民航局于2024年1月1日实施了《无人驾驶航空器飞行管理暂行条例》&#xff0c;根据这个管理条例里面的 第十一条 使用除微型以外的民用无人驾驶航空器从事飞行活动的单位应当具备下列条件&#xff0c;并向国务院民用航空主管部门或者地区民用航空管理机构申请取得民用无人驾…

从社区走向产业,让数据价值的流动像自来水一样即开即用|隐语开源两周年特别活动

“隐语”是开源的可信隐私计算框架&#xff0c;内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择&#xff0c;提供丰富的联邦学习算法和差分隐私机制 开源项目 github.com/secretflow gitee.com/secretflow 数据要素市场规模指数级增长&#xff0c;数据要素逐渐流向千行…

北大延毕硕士×INFJ | 我解脱了

前言 拿了双证&#xff0c;我终于能静下心来复盘一下我延毕一年的经历了。 给后面也许有相同困境的朋友们做个参考或者心理疏导作用。 延毕的原因 我延毕的主要原因是论文研三的时候论文没有完成&#xff0c;我们专业的论文一般是6个月全身心投入可以完成。我这个人是典型的…

数字创意赋能数字文创产业园,树莓集团立志打造全球文化创新标杆

在数字化和全球化的时代&#xff0c;文化创意产业正迎来前所未有的发展机遇。树莓集团作为行业的领军者&#xff0c;正通过其在数字文创产业园的努力&#xff0c;赋能数字文创产业&#xff0c;致力于打造全球文化创新标杆。 在树莓集团的战略布局下&#xff0c;数字文创产业园不…

7月26日贪心练习-摆动序列专题

前言 大家好&#xff0c;今天学习用贪心思想解决摆动序列问题&#xff0c;共三题&#xff0c;分享自己的思路&#xff0c;请大家多多支持 算法思想 大家可以先看看这道我们后面会讲的题看看怎么个事&#xff0c;. - 力扣&#xff08;LeetCode&#xff09; 由此题题解说明算…

MySQL练手 --- 1789. 员工的直属部门

题目链接&#xff1a;1789. 员工的直属部门 这道题虽然是个简单题&#xff0c;但是"坑"倒是不少&#xff0c;所以记录一下 思路&#xff1a; 题目要干&#xff1a; 一个员工可以属于多个部门。当一个员工加入超过一个部门的时候&#xff0c;他需要决定哪个部门是…

木材货场现状与新时代商贸物流关系分析

在全球经济一体化的浪潮下&#xff0c;商贸物流行业正经历着前所未有的变革。木材&#xff0c;作为传统而重要的原材料&#xff0c;在建筑、家具、包装等多个领域发挥着关键作用。然而&#xff0c;传统木材货场在面对新时代商贸物流的新要求时&#xff0c;其现状显得尤为滞后&a…

力扣刷题-图论-岛屿类问题-集合实现(c++实现)

我的老师&#xff1a;力扣链接这道题题解中最高赞的回答nettee&#xff0c;从这篇题解中我学到了dfs框架以及解决思路&#xff0c;并独立完成了该题解里的几道习题本人刷题的习惯是学会一个板子&#xff0c;然后之后的同类题都机械的用这个板子去做&#xff0c;最好不做创新&am…

Mybatis(三) 查询不同数据封装的方式

实体类&#xff1a; 数据库&#xff1a; 1、查询一个实体类对象 /** * 根据用户id查询用户信息* param id * return */User getUserById(Param("id") int id);<select id"getUserById" resultType"User">select * from t_user where id …

创维汽车滁州永通体验中心开业仪式暨超充车型区域上市会圆满成功

2024年7月20日&#xff0c;创维汽车滁州永通体验中心盛大开业&#xff0c;当日&#xff0c;创维汽车市场部经理周世鹏、安徽大区总监王大明等领导参加本次开业盛典&#xff0c;共同见证创维汽车滁州永通体验中心成功落地。 2021年&#xff0c;新能源乘用车高速发展&#xff0c;…

MATLAB基础:数组及其数学运算

今天我们继续学习MATLAB中的数组 我们在学习MATLAB时了解到&#xff0c;MATLAB作者秉持着“万物皆可矩阵”的思想企图将数学甚至世间万物使用矩阵表示出来&#xff0c;而矩阵的处理&#xff0c;自然成了这门语言的重中之重。 数组基础 在MATLAB中&#xff0c;数组是一个基本…

Beam Search 原理详解

文章目录 1. 前言2. 原理3. 举例4. 参考 1. 前言 Beam Search 是一种启发式图搜索算法&#xff0c;用于在图或树的搜索过程中寻找最有可能的路径。它常用于自然语言处理&#xff08;NLP&#xff09;中的序列生成任务&#xff0c;如机器翻译、语音识别和文本生成等。与穷举搜索…

网络三剑客之awk

目录 一、awk理论简述 1.1 awk概述 1.2 工作原理 1.3 工作流程 1.3.1 运行模式 1.3.2 执行流程 1.3.3 awk程序结构 1.4 基本语法 1.4.1 命令格式 二、awk操作显示 2.1 基础显示 注&#xff1a;扩展生产案例&#xff08;网卡ip、流量&#xff09; 2.2 BEGIN END 运…