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

有哪些做短租的网站好浙江省建设厅网站查询

有哪些做短租的网站好,浙江省建设厅网站查询,2016最新wordpress模板下载,企业门户网站有哪些引言 在Linux/Unix系统中,TAR格式是文件归档的黄金标准。Python标准库中的tarfile模块提供了强大的TAR文件处理能力,支持创建、读取、解压TAR文件,兼容gzip/bzip2/lzma等多种压缩格式,并完美处理符号链接、设备文件等特殊文件类型…

引言

在Linux/Unix系统中,TAR格式是文件归档的黄金标准。Python标准库中的tarfile模块提供了强大的TAR文件处理能力,支持创建、读取、解压TAR文件,兼容gzip/bzip2/lzma等多种压缩格式,并完美处理符号链接、设备文件等特殊文件类型。本文基于Python 3.12+官方文档及权威实践案例,系统解析其核心功能与使用技巧。

功能概览

  • 格式支持:GNU tar、POSIX ustar、pax三种格式,默认使用PAX_FORMAT
  • 压缩算法:原生支持gzip(gz)、bzip2(bz2)、lzma(xz)压缩格式
  • 文件处理:支持普通文件、目录、链接、设备文件等特殊类型
  • 大文件支持:自动处理超过8GB的超大文件(需文件系统支持)
  • 元数据管理:完整保留文件权限、时间戳、所有者等属性

基础用法

创建TAR文件

import tarfile# 创建普通TAR文件
with tarfile.open('archive.tar', 'w') as tar:tar.add('document.txt')  # 添加单个文件tar.add('images', arcname='backups')  # 添加目录并重命名# 创建gzip压缩的TAR文件
with tarfile.open('archive.tgz', 'w:gz') as tar:tar.add('large_data.csv', filter=lambda info: info.uid=1000)  # 自定义元数据

读取TAR内容

with tarfile.open('archive.tar', 'r') as tar:print(tar.namelist())  # 获取文件列表info = tar.getmember('document.txt')print(f"文件大小: {info.size} 字节, 权限: {oct(info.mode)}")

解压文件

# 解压到当前目录
with tarfile.open('archive.tar', 'r') as tar:tar.extractall()# 解压到指定路径
tar = tarfile.open('archive.tgz', 'r:gz')
tar.extractall(path='extract_dir', members=tar.getmembers()[3:5])  # 选择性解压

高级功能

压缩格式选择

# 创建不同压缩格式的TAR文件
tarfile.open('archive.tar', 'w').add('data.txt')        # 无压缩
tarfile.open('archive.tgz', 'w:gz').add('data.txt')    # gzip压缩
tarfile.open('archive.tar.bz2', 'w:bz2').add('data.txt') # bzip2压缩
tarfile.open('archive.tar.xz', 'w:xz').add('data.txt')  # lzma压缩

大文件处理

# 处理超大文件(超过4GB)
with tarfile.open('large_archive.tar', 'w', format=tarfile.GNU_FORMAT) as tar:tar.add('big_data.bin', filter=lambda info: setattr(info, 'mtime', 0))  # 优化元数据# 读取大文件时避免内存溢出
with tarfile.open('large_archive.tar', 'r') as tar:for member in tar.getmembers():if member.size > 10**9:  # 超过1GB的文件with tar.extractfile(member) as f:# 流式处理大文件chunk = f.read(1024*1024)while chunk:process(chunk)chunk = f.read(1024*1024)

特殊文件处理

# 处理符号链接
with tarfile.open('links.tar', 'w') as tar:tar.add('original.txt', arcname='link.txt')  # 普通文件tar.add('symlink', arcname='symbolic_link', recursive=False)  # 符号链接# 恢复设备文件
with tarfile.open('devices.tar', 'r') as tar:member = tar.getmember('device_file')if member.issym():print(f"符号链接指向: {member.linkname}")

常见问题与解决方案

中文路径处理

# 指定元数据编码
with tarfile.open('中文文件.tar', 'r', encoding='utf-8',errors='replace') as tar:print(tar.namelist())

安全解压

# 防止ZIP炸弹攻击
def safe_extract(tar_path, extract_dir):with tarfile.open(tar_path, 'r') as tar:for member in tar.getmembers():if member.size > 10**9:  # 拒绝解压超过1GB的文件raise ValueError("拒绝解压超大文件")if member.name.startswith('/') or '..' in member.name:raise ValueError("非法路径")tar.extractall(extract_dir)

错误处理

try:with tarfile.open('corrupted.tar', 'r') as tar:tar.extractall()
except tarfile.TarError as e:print(f"TAR文件错误: {str(e)}")
except OSError as e:print(f"文件系统错误: {str(e)}")

注意事项

  1. 格式兼容性:不同系统对TAR格式的支持存在差异,建议优先使用PAX格式
  2. 压缩级别:tarfile不直接支持压缩级别调节,需通过底层压缩模块实现
  3. 加密处理:原生不支持加密,需要结合cryptography等第三方库
  4. 性能优化:处理大量小文件时建议使用filter参数优化元数据处理
  5. 版本差异:Python 3.12后默认格式从GNU改为PAX,需注意版本兼容

总结

tarfile模块通过简洁的API实现了强大的TAR文件处理能力,是Python标准库中处理归档文件的利器。掌握其核心类(TarFileTarInfo)、方法(addextract)和参数(formatfilter),可高效完成文件压缩、跨平台数据交换、大文件处理等任务。建议结合官方文档与实际场景进行深度实践,特别注意编码设置和安全解压策略,确保文件处理的可靠性和安全性。

http://www.dtcms.com/a/418727.html

相关文章:

  • 南宁网站建设优势吉林省软环境建设办公室网站
  • 【数据结构】二叉树-图解深度优先搜索(递归法、迭代法)
  • 邯郸企业网站建设报价接收新网站如何做诊断
  • 做体力活的网站上海网站制作公司哪
  • Jenkins运维之路(Jenkins使用Mysql作为信息存储)
  • 爬虫访问第三方 HTTPS 网站时遇到的 SSL 异常处理
  • JavaWeb 课堂笔记 —— 22 登录校验
  • 整合营销传播案例广西网络优化seo
  • Mac电脑解决 npm 和 Yarn 安装时的证书过期问题
  • JavaScript继承详讲
  • 怎么理解ES的shard和segment
  • AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
  • 新乡网站关键词优化电商网站开发实战视频教程
  • 公司无网站无平台怎么做外贸wordpress检查php版本号
  • Spark核心Shuffle详解(二)ShuffleHandler
  • React Native启动性能优化实战:Hermes + RAM Bundles + 懒加载
  • 怎么做淘宝客个人网站wordpress可视化编辑插件下载
  • [C++项目框架]gflags和gtest的简单介绍
  • Vue2 和 Vue3 中使用 Vue Router 的详细过程
  • 微服务项目->在线oj系统(Java-Spring)-后台管理(2)
  • 【MySQL体系】第2篇:MySQL索引类型和原理
  • flash型的著名网站网站开发公司怎么接单
  • 【第五章:计算机视觉-项目实战之图像分割实战】2.图像分割实战:人像抠图-(1)人像抠图Image Matting算法详解
  • 使用 PyTorch 构建并训练 CNN 模型
  • 如何做电影网站狼视听seo外包优化服务商
  • blender布局工作区突然变得很卡
  • 【计算机视觉】图像去雾技术
  • 工信部网站icp备案号文艺范wordpress主题
  • 树莓派无法播放哔哩哔哩等视频
  • 华为芯片泄密案警示:用Curtain e-locker阻断内部数据泄露