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

Python工具箱系列(四十)

使用gzip对数据进行压缩

这是python提供的压缩模块,便于用户对数据、文件进行压缩。功能类似于 GNU 应用程序gzip和gunzip。以下代码压缩一段字节流。

import gzip# 压缩一段英文
originstr = 'The World Health Organization officially declared on Saturday that the current multi-country monkeypox outbreak outside of the traditional endemic areas in Africa has already turned into a public health emergency of international concern (PHEIC).'
print(len(originstr))
str_compression = gzip.compress(originstr.encode('utf-8'))
print(len(str_compression))
print(str_compression)
decompress_str = gzip.decompress(str_compression)
print(decompress_str)
print(decompress_str.decode('utf-8'))

使用gzip可以直接将数据写入压缩文件中,gzip压缩文件可以像普通文件一样进行打开、写入的操作如下所示。

import gzipdef creategzip():info = '核聚变其实就是较轻的原子核在高温高压下聚合成较重的原子核,宇宙中的每一颗恒星都是一个天然的“核聚变反应堆”,在自身重力的挤压下,恒星的核心就会形成高温高压的环境,从而为核聚变提供了条件。原子核的原子序数越高,其发生核聚变的条件也就越高,而恒星核心的温度和压强是与恒星的质量成正比的,因此宇宙中的那些质量较低的恒星是聚变不出什么花样的。'with gzip.open(r'd:\dev\demo.txt.gz','wb') as out:out.write(info.encode('utf8'))def readgzip():with gzip.open(r'd:\dev\demo.txt.gz','rb') as input:result = input.read()print(result.decode('utf-8'))creategzip()
readgzip()

在工程应用中,经常有将几个指定的文件压缩后上传到指定服务器的访求。下面的示例代码中,使用超级轻量的shelve数据库来存储目标文件列表。同时使用gzip模块进行文件压缩。

import shelve
import gzip
import shutil
from pathlib import Pathdef generate_filelist():"""在shelve数据库中保存要压缩的目标文件列表"""db = shelve.open('targetfiles')db["target"] = [r'D:\toolkit\minikube\minikube.exe',r'C:\Users\tianbin\Music\Syml - Wildfire (Piano and Violin Version).mp3']db.close()def compressbyplan():"""打开数据库,获得目标文件列表,将每个列表进行压缩"""with shelve.open("targetfiles") as db:filelist = db['target']for targetfile in filelist:basename = Path(targetfile).namewith open(targetfile, 'rb') as f_in:with gzip.open(f'{basename}.gz', 'wb') as output:shutil.copyfileobj(f_in, output)generate_filelist()
compressbyplan()

示例代码中,可以方便的将全路径的目标文件名放在shelve数据库中。shelve数据库是python内置的数据库,相当于把字典保存在了文件上,但同时因为有自己的格式,所以不能够像普通的文本文件一样直接查看与修改,从而保证了一定程度的安全性(虽然这个安全性像纸一样薄)。python提供的gzip模块只能够一次处理一个文件,所以使用pathlib库从全路径文件名中提取纯文件名,随后在本地创建压缩文件。

相关文章:

Python工具箱系列(四十)

使用gzip对数据进行压缩 这是python提供的压缩模块,便于用户对数据、文件进行压缩。功能类似于 GNU 应用程序gzip和gunzip。以下代码压缩一段字节流。 import gzip# 压缩一段英文 originstr The World Health Organization officially declared on Saturday that …...

【Hibench 】完成 HDP-Spark 性能测试

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的…...

【C++奇遇记】内存模型

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如…...

Debootstrap 教程

文章目录 Debootstrap 教程安装 debootstrap使用 debootstrap运行 debootstrap进入新的系统结束语 Debootstrap 教程 debootstrap 是一个用于在 Debian-based 系统上创建一个基本的 Debian 系统的工具。它可以用于创建 chroot 环境、容器或者为新的系统安装做准备。 安装 deb…...

MySQL之InnoDB引擎

MySQL之InnoDB引擎 简介逻辑存储结构InnoDB架构内存架构缓冲池LRU List、Free List和Flush List更改缓冲区(在5.x版本之前叫做插入缓冲区)自适应hash日志缓冲区 磁盘架构System TablespaceFile Per Table TabspaceGeneral TablespceUndo TablespaceTemp …...

API自动化管理: 从繁琐到轻松

在数字化时代,API(应用程序编程接口)在软件开发中扮演着至关重要的角色。然而,API管理可能会变得十分繁琐,耗费大量时间和资源。那么,如何实现API自动化管理,从而节省时间、提高效率&#xff0c…...

Databend 开源周报第 107 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 理解连接参数 …...

计算机网络参考模型

目录 ​编辑 简介 1.分层模型 1.1 分层的思想 1.2 OSI参考模型与TCP/IP协议簇 1.OSI 参考模型 2.TCP/IP 参考模型 简介 本章大家将学习网络参考模型的概念,对干参考模型的讲解将会贯穿网络课程的始终,因为它是理解网络这个全新世界的关键所在&…...

【React基础全篇】

文章目录 一、关于 React二、脚手架2.1 create-react-app 脚手架的使用2.2 项目目录解析2.3 抽离配置文件2.4 webpack 二次封装2.4.1 集成 css 预处理器2.4.2 配置解析别名 2.5 setupProxy 代理 三、JSX3.1 jsx 语法详解3.2 React.createElement 四、组件定义4.1 类组件4.2 函数…...

如何使用 Vue.js 侦听嵌套数据?

new Vue({el: "#app",data: {target: {list: [],},},watch: {"target.list": {handler(newVal, oldVal) {},deep: true,},} }); 给target的list属性增加侦听器,需要在watch中使用字符串的写法 "target.list" 来标记侦听的内容 han…...

Spring AOP详解

Spring AOP是Spring框架中的一个模块,它允许开发人员使用面向切面编程(AOP)的思想来解耦系统的不同层次。 Spring AOP的核心概念是切面(aspect)、连接点(join point)、通知(advice)、切点(pointcut)和引入(introduction)。 切面(aspect):切面是一个类, 它…...

linux iptables安全技术与防火墙

linux iptables安全技术与防火墙 1、iptables防火墙基本介绍1.1netfilter/iptables关系1.2iptables防火墙默认规则表、链结构 2、iptables的四表五链2.1四表2.2五链2.3四表五链总结2.3.1 规则链之间的匹配顺序2.3.2 规则链内的匹配顺序 3、iptables的配置3.1iptables的安装3.2i…...

TCP性能机制

延迟应答 为什么有延迟应答 发送方如果长时间没有收到ACK应答,则会触发超时重传机制,重新发送数据包。但如果接收数据的主机立刻返回ACK应答, 这时候返回的窗口可能比较小,发送方一次只能发少量数据,效率较低。 举个例子理解一…...

qt信号槽同步问题

目录 信号槽: 注意事项: 具体例子: 线程安全问题的例子: 信号槽: 在Qt编程中,信号(Signal)和槽(Slot)是一种用于在对象之间进行通信的机制。信号用于发出…...

七夕特惠-8折抢购,从速

在七夕这个特殊的日子,我们推出了8折优惠活动,具体如下: 不管是充值会员,还是购买套路文章,一律享受8折优惠,活动截止时间为2023年8月24日12时。 甚至还有免费抽奖活动 兑奖方式,复制兑奖码…...

[NLP]LLM--transformer模型的参数量

1. 前言 最近,OpenAI推出的ChatGPT展现出了卓越的性能,引发了大规模语言模型(Large Language Model, LLM)的研究热潮。大规模语言模型的“大”体现在两个方面:模型参数规模大,训练数据规模大。以GPT3为例,GPT3的参数量…...

5 Python的面向对象编程

概述 在上一节,我们介绍了Python的函数,包括:函数的定义、函数的调用、参数的传递、lambda函数等内容。在本节中,我们将介绍Python的面向对象编程。面向对象编程(Object-Oriented Programming, 即OOP)是一种…...

卷积神经网络——上篇【深度学习】【PyTorch】【d2l】

文章目录 5、卷积神经网络5.1、卷积5.1.1、理论部分5.1.2、代码实现5.1.3、边缘检测 5.2、填充和步幅5.2.1、理论部分5.2.2、代码实现 5.3、多输入多输出通道5.3.1、理论部分5.3.2、代码实现 5.4、池化层 | 汇聚层5.4.1、理论部分5.4.2、代码实现 5、卷积神经网络 5.1、卷积 …...

【从零学习python 】54. 内存中写入数据

文章目录 内存中写入数据StringIOBytesIO进阶案例 内存中写入数据 除了将数据写入到一个文件以外,我们还可以使用代码,将数据暂时写入到内存里,可以理解为数据缓冲区。Python中提供了StringIO和BytesIO这两个类将字符串数据和二进制数据写入…...

速通蓝桥杯嵌入式省一教程:(九)AT24C02芯片(E2PROM存储器)读写操作与I2C协议

AT24C02芯片(又叫E2PROM存储器、EEPROM存储器),是一种通过I2C(IIC)协议通信的掉电保存存储器芯片,其内部含有256个8位字节。在介绍这款芯片之前,我们先来粗略了解一下I2C协议。 I2C总线是一种双向二线制的同步串行总线…...

基于Tauri与Bun的本地多智能体AI助手YouClaw:架构、配置与实战

1. 项目概述:一个桌面端的多智能体AI助手运行时 最近在折腾AI智能体(Agent)的本地化部署和集成,发现了一个挺有意思的开源项目——YouClaw。简单来说,它是一个基于Tauri 2构建的桌面应用,核心是一个支持多…...

如何免费获得Windows风扇智能控制:FanControl终极指南

如何免费获得Windows风扇智能控制:FanControl终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…...

InferenceX:大模型高效推理引擎核心原理与生产部署实战

1. 项目概述:从模型训练到高效推理的最后一公里如果你在AI领域,特别是大模型应用开发上投入过精力,那么对“InferenceX”这个名字可能不会感到陌生。它不是一个全新的训练框架,也不是一个模型仓库,而是精准地瞄准了当前…...

Vivado里配置RFSoC数据转换器IP,这10个参数新手最容易搞错(附PG269避坑指南)

Vivado中RFSoC数据转换器IP配置的10个关键参数解析与实战避坑指南 第一次在Vivado中配置RFSoC的数据转换器IP核时,面对密密麻麻的参数选项,即使是经验丰富的FPGA工程师也可能感到无从下手。RFSoC作为集成了高速数据转换器的异构计算平台,其配…...

Android端ChatGPT客户端开发:MVVM架构与OpenAI API集成实践

1. 项目概述与核心价值最近在折腾移动端AI应用开发,发现一个挺有意思的开源项目——icecoins/ChatGPT_Android。这名字一看就懂,一个在Android平台上实现ChatGPT功能的客户端。但如果你以为这只是个简单的WebView套壳,那就太小看它了。我花了…...

FPGA生成SPWM的另一种思路:抛弃ROM,用DDS IP核与CORDIC算法实时生成正弦波

FPGA实时生成SPWM:基于DDS IP核与CORDIC算法的高效实现方案 在电力电子和电机控制领域,SPWM(正弦脉宽调制)技术因其优异的谐波特性和高效率而广受青睐。传统FPGA实现方案通常采用预存波形数据的ROM方法,虽然实现简单&a…...

别再只会scp了!Ansible copy和file模块的5个实战场景,从配置文件分发到权限管理

别再只会scp了!Ansible copy和file模块的5个实战场景,从配置文件分发到权限管理 如果你还在用scp或rsync手动同步服务器文件,每次修改权限都要逐台登录操作,那么这篇文章将彻底改变你的运维工作流。Ansible的copy和file模块不仅能…...

AI图像编辑中的性别擦除现象与视觉公平性测试

1. 项目概述:当AI“擦除”男性面孔时,我们到底在测试什么?“AI Erases Men Too: A Visual Test of Bias Across Four Leading Tools”——这个标题乍看像一则科技媒体的警示快讯,但背后是一次扎实、可复现、有明确方法论支撑的视觉…...

十分钟速通:GO、KEGG、COG注释与富集分析的实战指南

1. 从测序数据到功能注释的快速通道 刚拿到高通量测序数据的同学,面对海量基因序列时总会陷入迷茫:这些基因到底有什么功能?它们参与了哪些生物过程?这时候GO、KEGG和COG三大注释工具就是你的"基因翻译官"。我处理过上百…...

MarkFlowy:基于智能感知的Markdown写作流工具设计与实现

1. 项目概述:一个为Markdown而生的高效写作流工具 如果你和我一样,每天的工作都离不开Markdown——写技术文档、整理项目笔记、构思博客文章,那你一定体会过那种在“专注写作”和“格式调整”之间反复横跳的痛苦。刚进入心流状态,…...