简单分享下Python文件操作

news2024/9/20 15:29:36

1. 上传文件到服务器

场景描述:

使用 requests 库上传文件到服务器。

import requestsdef test_upload_file():    url = "https://api.example.com/upload"    file_path = "path/to/file.txt"    with open(file_path, "rb") as file:        files = {"file": ("file.txt", file)}        response = requests.post(url, files=files)        assert response.status_code == 200        assert response.json()["message"] == "File uploaded successfully"

输出结果:

PASSED‍

INSPIRATION

2. 下载文件并保存到本地

场景描述:

下载文件并保存到本地。

import requestsdef test_download_file():    url = "https://api.example.com/download"    local_path = "path/to/local/file.txt"    response = requests.get(url)    with open(local_path, "wb") as file:        file.write(response.content)    assert response.status_code == 200

输出结果:

PASSED‍

INSPIRATION

3. 比较两个文件内容

场景描述:

比较服务器返回的文件与本地文件的内容是否一致。

import requestsdef test_compare_files():    url = "https://api.example.com/download"    local_path = "path/to/local/file.txt"    remote_path = "path/to/remote/file.txt"    with open(local_path, "r") as local_file, open(remote_path, "r") as remote_file:        local_content = local_file.read()        remote_content = remote_file.read()    assert local_content == remote_content

输出结果:

PASSED‍

INSPIRATION

4. 读取 CSV 文件并作为请求参数

场景描述:

读取 CSV 文件并将其中的数据作为请求参数发送给 API。

import csvimport requestsdef test_send_csv_data():    url = "https://api.example.com/csv"    file_path = "path/to/file.csv"    with open(file_path, newline='') as csvfile:        reader = csv.DictReader(csvfile)        for row in reader:            response = requests.post(url, data=row)            assert response.status_code == 200

输出结果:

PASSED‍

INSPIRATION

5. 读取 JSON 文件并发送 POST 请求

场景描述:

读取 JSON 文件并将其内容作为请求体发送到 API。

import jsonimport requestsdef test_send_json_data():    url = "https://api.example.com/json"    file_path = "path/to/file.json"    with open(file_path, "r") as file:        data = json.load(file)    response = requests.post(url, json=data)    assert response.status_code == 200

输出结果:

PASSED‍

INSPIRATION

6. 下载文件并验证文件大小

场景描述:

下载文件并验证文件大小。

import requestsdef test_validate_file_size():    url = "https://api.example.com/download"    response = requests.get(url)    file_size = len(response.content)    assert file_size == 1024  # 假设文件大小为 1024 字节

输出结果:

PASSED‍

INSPIRATION

7. 上传文件并验证文件名

场景描述:

上传文件并验证服务器返回的文件名。

​​​​​​​

import requestsdef test_validate_uploaded_filename():    url = "https://api.example.com/upload"    file_path = "path/to/file.txt"    with open(file_path, "rb") as file:        files = {"file": ("file.txt", file)}        response = requests.post(url, files=files)        assert response.status_code == 200        assert response.json()["filename"] == "file.txt"

输出结果:

PASSED‍

INSPIRATION

8. 上传多个文件

场景描述:

同时上传多个文件。

import requestsdef test_upload_multiple_files():    url = "https://api.example.com/upload"    files = [("file", ("file1.txt", open("path/to/file1.txt", "rb"))),             ("file", ("file2.txt", open("path/to/file2.txt", "rb")))]    response = requests.post(url, files=files)    assert response.status_code == 200    assert len(response.json()["uploaded_files"]) == 2

输出结果:

PASSED‍

INSPIRATION

9. 上传文件并验证 MD5 校验码

场景描述:

上传文件并验证服务器返回的 MD5 校验码与计算出的校验码是否一致。

import hashlibimport requestsdef test_validate_md5_checksum():    url = "https://api.example.com/upload"    file_path = "path/to/file.txt"    with open(file_path, "rb") as file:        files = {"file": ("file.txt", file)}        response = requests.post(url, files=files)        assert response.status_code == 200        md5_hash = hashlib.md5()        with open(file_path, "rb") as file:            chunk = file.read(8192)            while chunk:                md5_hash.update(chunk)                chunk = file.read(8192)        assert response.json()["md5"] == md5_hash.hexdigest()

输出结果:

PASSED‍

INSPIRATION

10. 上传文件并验证文件类型

场景描述:

上传文件并验证服务器返回的 MIME 类型是否正确。

import requestsimport mimetypesdef test_validate_mimetype():    url = "https://api.example.com/upload"    file_path = "path/to/image.jpg"    with open(file_path, "rb") as file:        files = {"file": ("image.jpg", file)}        response = requests.post(url, files=files)        assert response.status_code == 200        assert response.json()["mimetype"] == mimetypes.guess_type(file_path)[0]

输出结果:

PASSED‍

INSPIRATION

图片

以上示例中的 URL 和文件路径均为示例性质,你需要根据实际情况替换它们。这些示例涵盖了文件上传、下载、验证文件内容、文件大小、文件名、MD5 校验码、MIME 类型等常见操作。

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

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

相关文章

解决串口打印乱码:确保晶振频率设置正确

项目场景: GD32单片机通过USART1串口,以115200波特率每1秒发送自定义字符串(“my_test”),PC机使用串口助手接收数据。 问题描述 使用串口助手软件(sscom)接收GD3232单片机通过UART发送的数据…

【STM32】PWR电源控制(低功耗模式)

本篇博客重点在于标准库函数的理解与使用,搭建一个框架便于快速开发 目录 PWR简介 修改主频 低功耗模式 睡眠模式 停止模式 待机模式 PWR简介 PWR(Power Control)电源控制 ,负责管理STM32内部的电源供电部分,可…

基于麻雀SSA优化BP神经网络多输入多输出的数据回归预测Matlab程序SSA-BP 含预测新数据程序

基于麻雀SSA优化BP神经网络多输入多输出的数据回归预测Matlab程序SSA-BP 含预测新数据程序 文章目录 一、基本原理1. SSA(麻雀搜索算法)2. BP(反向传播神经网络)3. SSA-BP回归预测的整合 二、实验结果三、核心代码四、代码获取五、…

使用idea快速创建springbootWeb项目(springboot+springWeb+mybatis-Plus)

idea快速创建springbootWeb项目 详细步骤如下 1)创建项目 2)选择springboot版本 3)添加web依赖 4)添加Thymeleaf 5)添加lombok依赖 然后点击create进入下一步 双击pom.xml文件 6)添加mybatis-plus依赖 …

Ubuntu搭建FTP服务器

目录 1.ftp简介 2.vsftpd 2.1.介绍 2.2.安装与卸载 2.3.综合案例 - 本地用户模式 2.4.1.创建FTP用户 2.4.2.配置vsftpd 2.4.3.配置防火墙 1.ftp简介 一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方…

盘点 8 月份 火火火 的开源项目

01 Rnote:释放创意,手绘与笔记的开源之选 Rnote是一个基于矢量的开源绘图应用,专为手绘、手写笔记以及文档和图片注释设计。 它适用于学生、教师以及拥有绘图板的用户,提供了 PDF 和图片的导入导出功能,无限画布以及适…

单词拆分[中等]

优质博文:IT-BLOG-CN 一、题目 给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1&#x…

【第54课】XSS跨站Cookie盗取表单劫持网络钓鱼溯源分析项目平台框架

免责声明 本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利&#xff0…

004、架构_计算节点

架构总览 重要线程 管理线程:主要负责元数据相关的管理,涉及启动、DDL、切换;执行线程:是CN最重要的核心线程组,涉及解析、执行计划、分发、聚合;路由线程:主要负责向DN节点分发语句,涉及读写分离、子语句;GTM代理线程:主要负责与GTM交互、涉及申请、活跃GTID查询、释…

YASKAWA机器人维修操作命令攻略-移动命令运用案例

移动命令 1. MOVJ 命令运用案例: MOVJ VJ50.00 PL2 NWAIT UNTIL IN(1)ON 含义:在这个点以关节坐标,按 50.00%的再现速度,定位精度为 2,同时执行下一条非移动 指令,判断输入信号 1 为 on 后,执行…

助力航运管理数字智能化,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建江面河道运输场景下来往航行船只自动检测识别系统

在全球化浪潮的推动下,物流行业作为连接世界的桥梁,其快速发展与进化不仅重塑了国际贸易的格局,更深刻影响着全球贸易金融的进程。其中,海运作为大宗商品跨国、全球化贸易的支柱性运输方式,其重要性不言而喻。随着各国…

ios去水印软件免费版,精选五大高效工具,告别水印烦恼!

随着社交媒体的普及,越来越多的人喜欢在网络上分享自己的生活点滴。在分享视频时,水印往往会影响美观。为了帮助大家解决这个问题,本文为您推荐五大高效免费的iOS去水印软件,让您轻松告别水印烦恼! 软件一&#xff1a…

第137天:横向移动-Linux_ssh工具杂项Linux靶场环境搭建

实验环境及图解: 通过网盘分享的文件:137-Linux内网环境镜像文件 链接: https://pan.baidu.com/s/1W_5DvhbkGYMqML4mi1rjQA?pwdad6r 提取码: ad6r 一般情况下SSH密钥存放在~/.ssh/目录下,也可以文件中搜索已保存的SSH凭证 ~/.ssh/config ~/.…

eclipse下载安装与配置代码补全与中文版

eclipse下载安装与配置中文版 eclipse下载eclipse安装eclipse配置代码补全eclipse配置中文版 eclipse下载 首先我们从官网下载eclipse,点击后是如下页面 我们往下滑,选择自己需要的版本,在这里我们选择的是Windows的Java开发版本&#xff0c…

【自动驾驶】决策规划算法 | 数学基础(二)凸优化与非凸优化

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

机器学习||笔记

在学习机器学习之前,应具备以下基础: 编程技能:精通 Python,掌握数据结构、函数、面向对象编程,熟悉 Git 和 Jupyter Notebook。 数学基础: 线性代数:矩阵运算、特征值与特征向量。微积分&…

2009年

一、选择 B C D B A 答案 C 叶子节点可能出现在最下层和次下层 所以最多七层,前六层是满二叉树 C 答案 B A D A B 二、大题

JVM垃圾回收算法以及垃圾收集器

JVM垃圾回收算法 JVM垃圾回收算法分为三类:标记清除算法、标记整理算法、 复制算法 标记清除算法 垃圾回收分为2个阶段,分别是标记和清除,效率高有磁盘碎片,内存不连续 标记整理算法 标记清除算法一样,将存活对象都向内存另一端移动,然后清理边界以外的垃圾,无…

Windows 11系统 Eclipse 2024版本安装教程和环境搭建

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 Eclipse 是一个开源的集成开发环境 (IDE),主要用于 Java 开发,但也支持其他编程语言如 C、Python 和 PHP。它提供了丰富的工具和插件,用于编写、调试和管理代码&#x…

【时时三省】(C语言基础)指针进阶4

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 阅读两段有趣的代码: 代码1: (*(void(*)())0)(); 意思是调用0地址处的函数 该函数无参,返回类型是void 1.void(*)()-函数指针 2.(void(*)())0-对0进…