当前位置: 首页 > news >正文

用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.总结

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

你也快来试试吧!

相关文章:

用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 的设计具…...

最新源支付系统源码 V7版全开源 免授权 附搭建教程

本文来自&#xff1a;最新源支付系统源码 V7版全开源 免授权 附搭建教程 - 源码1688 简介&#xff1a; 最新源支付系统源码_V7版全开源_免授权_附详细搭建教程_站长亲测 YPay是专为个人站长打造的聚合免签系统&#xff0c;拥有卓越的性能和丰富的功能。它采用全新轻量化的界面…...

HTML:lang属性作用

lang作用 用法常见语言代码优点示例结构效果说明分析HTML 基础结构导航栏内容部分总结 扩展 用法 HTML 文档级别: 在 <html> 标签上使用 lang 属性&#xff0c;指定整个文档的语言。 <!DOCTYPE html> <html lang"en"> <head><meta charse…...

Android SurfaceFlinger——纹理的绘制流程(二十八)

在系统开机动画的播放流程中,会从给定的资源文件中加载纹理数据并初始化一个 OpenGL 纹理对象,这里我们就来解析软件模拟纹理的绘制流程。 一、纹理概述 在 Android 的 SurfaceFlinger 系统组件中,纹理(Texture)是一个核心概念,特别是在涉及到图形渲染和显示的过程中。 …...

深入解析Memcached:C#中的应用与实战案例

目录 Memcached简介Memcached的特点Memcached的工作原理Memcached的应用场景Memcached的安装和配置Memcached与C#的集成 引入依赖配置Memcached客户端C#代码示例 存储数据读取数据删除数据深入解析Memcached 数据存储和过期策略分布式架构性能优化实战案例 缓存数据库查询结果实…...

keyring 库

目录 安装 keyring 基本用法 1. 设置密码 2. 获取密码 3. 删除密码 4. 返回当前使用的默认密钥环 5. 列出所有密码 支持的后端 keyring 是一个 Python 库&#xff0c;用于将敏感信息&#xff08;如密码&#xff09;安全地存储在操作系统的密码管理器中。它支持多种平台…...

[css3] 如何设置边框颜色渐变

div {border: 4px solid;border-image: linear-gradient(to right, #8f41e9, #578aef) 1; }参考&#xff1a; 5种CSS实现渐变色边框&#xff08;Gradient borders方法的汇总...

Redux +Toolkit 工具包快速入门

您将学到什么 如何设置并使用 Redux Toolkit 和 React-Redux 先决条件 熟悉ES6 语法和功能了解 React 术语&#xff1a;JSX、State、Function Components 、 Props和Hooks理解Redux 术语和概念 1、基本使用 1.1、安装 Redux Toolkit 和 React- Redux 将 Redux Toolkit 和 Rea…...

【Python数据增强】图像数据集扩充

前言&#xff1a;该脚本用于图像数据增强&#xff0c;特别是目标检测任务中的图像和标签数据增强。通过应用一系列数据增强技术&#xff08;如旋转、平移、裁剪、加噪声、改变亮度、cutout、翻转等&#xff09;&#xff0c;生成多样化的图像数据集&#xff0c;以提高目标检测模…...

实时同步:使用 Canal 和 Kafka 解决 MySQL 与缓存的数据一致性问题

目录 1. 准备工作 2. 将需要缓存的数据存储 Redis 3. 监听 canal 存储在 Kafka Topic 中数据 1. 准备工作 1. 开启并配置MySQL的 BinLog&#xff08;MySQL 8.0 默认开启&#xff09; 修改配置&#xff1a;C:\ProgramData\MySQL\MySQL Server 8.0\my.ini log-bin"HELO…...

WINUI——Microsoft.UI.Xaml.Markup.XamlParseException:“无法找到与此错误代码关联的文本。

开发环境 VS2022 .net core6 问题现象 在Canvas内的子控件要绑定Canvas的兄弟控件的一个属性&#xff0c;在运行时出现了下述报错。 可能原因 在 WinUI&#xff08;特别是用于 UWP 或 Windows App SDK 的版本&#xff09;中&#xff0c;如果你尝试在 XAML 中将 Canvas 内的…...

C语言 | Leetcode C语言题解之第283题移动零

题目&#xff1a; 题解&#xff1a; void swap(int *a, int *b) {int t *a;*a *b, *b t; }void moveZeroes(int *nums, int numsSize) {int left 0, right 0;while (right < numsSize) {if (nums[right]) {swap(nums left, nums right);left;}right;} }...

WPF项目实战视频《二》(主要为prism框架)

14.prism框架知识&#xff08;1&#xff09; 使用在多个平台的MVVM框架 新建WPF项目prismDemo 项目中&#xff1a;工具-NuGet包管理&#xff1a;安装Prism.DryIoc框架 在git中能看Prism的结构和源代码&#xff1a;git链接地址 例如&#xff1a;Prism/src/Wpf/Prism.DryIoc.Wpf…...

【微信小程序实战教程】之微信小程序 WXS 语法详解

WXS语法 WXS是微信小程序的一套脚本语言&#xff0c;其特性包括&#xff1a;模块、变量、注释、运算符、语句、数据类型、基础类库等。在本章我们主要介绍WXS语言的特性与基本用法&#xff0c;以及 WXS 与 JavaScript 之间的不同之处。 1 WXS介绍 在微信小程序中&#xff0c…...

Android中Service学习记录

目录 一 概述二 生命周期2.1 启动服务startService()2.2 绑定服务bindService()2.3 先启动后绑定2.4 先绑定后启动 三 使用3.1 本地服务&#xff08;启动式&#xff09;3.2 可通信的服务&#xff08;绑定式&#xff09;3.3 前台服务3.4 IntentService 总结参考 一 概述 Servic…...

Elasticsearch:Java ECS 日志记录 - log4j2

ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松将日志格式化为与 ECS 兼容的 JSON。ECS 兼容的 JSON 日志记录可以帮我们简化很多分析&#xff0c;可视化及解析的工作。在今天的文章里&#xff0c;我来详述如何在 Java 应用里生成 ECS 相兼容的日志。 …...

MongoDB自学笔记(四)

一、前文回顾 上一篇文章中我们学习了MongoDB中的更新方法&#xff0c;也学了一部分操作符。今天我们将学习最后一个操作“删除”。 二、删除 原始数据如下&#xff1a; 1、deleteOne 语法&#xff1a;db.collection.deleteOne(< query >,< options >) 具体参…...

时序分解 | Matlab基于CEEMDAN-CPO-VMD的CEEMDAN结合冠豪猪优化算法(CPO)优化VMD二次分解

时序分解 | Matlab基于CEEMDAN-CPO-VMD的CEEMDAN结合冠豪猪优化算法&#xff08;CPO&#xff09;优化VMD二次分解 目录 时序分解 | Matlab基于CEEMDAN-CPO-VMD的CEEMDAN结合冠豪猪优化算法&#xff08;CPO&#xff09;优化VMD二次分解效果一览基本介绍程序设计参考资料 效果一览…...

新版海螺影视主题模板M3.1全解密版本多功能苹果CMSv10后台自适应主题

苹果CMS2022新版海螺影视主题M3.1版本&#xff0c;这个主题我挺喜欢的&#xff0c;之前也有朋友给我提供过原版主题&#xff0c;一直想要破解但是后来找了几个SG11解密的大哥都表示解密需要大几百大洋&#xff0c;所以一直被搁置了。这个版本是完全解密的&#xff0c;无需SG11加…...

汽车免拆诊断案例 | 2014 款上汽名爵 GT 车发动机无法起动

故障现象 一辆2014款上汽名爵GT车&#xff0c;搭载15S4G发动机&#xff0c;累计行驶里程约为18.4万km。该车因左前部发生碰撞事故进厂维修&#xff0c;更换损坏的部件后起动发动机&#xff0c;起动机运转有力&#xff0c;但无着机迹象。用故障检测仪检测&#xff0c;发现无法与…...

OpenHarmony模块配置实战:从GN模板到部件依赖的完整指南

1. 从零开始理解OpenHarmony的模块配置&#xff1a;一个资深开发者的实战拆解如果你刚开始接触OpenHarmony的源码开发&#xff0c;面对那一堆BUILD.gn文件和bundle.json配置&#xff0c;是不是感觉有点无从下手&#xff1f;模块、部件、子系统&#xff0c;这些概念听起来就让人…...

终极指南:如何用MAA Assistant Arknights实现明日方舟全自动化

终极指南&#xff1a;如何用MAA Assistant Arknights实现明日方舟全自动化 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: htt…...

罗技鼠标压枪宏配置实战:游戏辅助脚本的完整应用方案

罗技鼠标压枪宏配置实战&#xff1a;游戏辅助脚本的完整应用方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为绝地求生中枪口乱飘而苦恼…...

不只是大小端:用Python脚本自动解析DBC文件中的Motorola和Intel信号

自动化解析DBC信号&#xff1a;Python实战Motorola与Intel字节顺序处理 在汽车电子和工业控制领域&#xff0c;CAN总线通信扮演着至关重要的角色。DBC文件作为描述CAN通信协议的标准化格式&#xff0c;包含了消息、信号以及各种通信参数的完整定义。对于测试工程师和嵌入式开发…...

如何5分钟完成专业电路图:Draw.io ECE插件完全指南

如何5分钟完成专业电路图&#xff1a;Draw.io ECE插件完全指南 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.com/gh_mirrors/d…...

微软MOS认证-Word专家级|超全报考指南

不管是大学生还是职场人&#xff0c;Word 都是绕不开的工具。但多数人只会基础打字排版&#xff0c;面对长文档、规范报告时常常手忙脚乱。MOSWord 专家级认证&#xff0c;正是帮你把 “普通 Word” 变成 “高-效办公武器” 的实用路径。#微软mos认证 #大学生考证 #mos认证考试…...

如何用 curl 命令快速测试 Taotoken 的 API 是否连通

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 如何用 curl 命令快速测试 Taotoken 的 API 是否连通 在接入大模型服务时&#xff0c;直接使用 curl 命令测试 API 是最基础、最直…...

KNN算法调参实战:如何为你的数据选择合适的距离度量(从闵可夫斯基距离说起)

KNN算法调参实战&#xff1a;如何为你的数据选择合适的距离度量&#xff08;从闵可夫斯基距离说起&#xff09; 在机器学习项目中&#xff0c;K近邻&#xff08;KNN&#xff09;算法因其简单直观而广受欢迎。但许多实践者往往忽略了一个关键环节——距离度量的选择。当你在Scik…...

忘记压缩包密码怎么办?5分钟学会用ArchivePasswordTestTool找回密码

忘记压缩包密码怎么办&#xff1f;5分钟学会用ArchivePasswordTestTool找回密码 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经…...

ClawForgeAI:基于工作流编排的AIGC创意自动化平台解析

1. 项目概述&#xff1a;从“ClawForgeAI/clawforge”看AI驱动的创意工具新范式最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“ClawForgeAI/clawforge”。光看这个名字&#xff0c;你可能会有点摸不着头脑——“ClawForge”听起来像是个游戏模组工具或者某种机械设计软…...