文件操作利器:Python十大库全面解析

news2024/12/26 16:30:19

更多资料获取

📚 个人网站:ipengtao.com


Python拥有多个库用于文件操作,提供了各种功能来管理、读取和写入文件。这些库覆盖了从基本的文件系统交互到高级的文件压缩和数据格式处理等多个方面。文件操作是编程中不可或缺的一部分,因此了解这些库对于开发者来说是至关重要的。

os 模块

os 模块提供了丰富的接口,用于与操作系统交互,包括文件和目录的创建、修改和删除等功能。

列出目录中的文件

import os

# 列出目录中的文件
files = os.listdir('/path/to/directory')
print("Directory Files:", files)

创建文件夹

import os

# 创建新文件夹
os.mkdir('/path/to/new/directory')

删除文件

import os

# 删除文件
os.remove('/path/to/file')

删除文件夹

import os

# 删除文件夹(必须为空文件夹)
os.rmdir('/path/to/directory')

os 模块提供了许多其他方法,如重命名文件、获取文件属性、改变工作目录等,这些方法能够对文件系统进行广泛的操作。

pathlib 模块

pathlib 模块提供了更面向对象的方式来操作文件系统,使路径的操作更加直观和简单。

使用路径操作

from pathlib import Path

# 创建路径
path = Path("/path/to/directory")

# 检查路径是否存在
if path.exists():
    print("Path exists")

# 列出目录中的文件
for file in path.iterdir():
    print(file)

# 创建新文件
new_file = path / "new_file.txt"
new_file.write_text("Hello, this is a new file.")

# 读取文件内容
content = new_file.read_text()
print("File Content:", content)

pathlib 模块使得路径的创建、检查、操作等操作更加直观和简便,同时提供了许多方法来进行路径和文件的操作。

shutil 模块

shutil 模块提供了对文件和目录进行高级操作的工具,包括复制、移动、删除文件以及递归操作文件夹等功能。

复制文件

import shutil

# 复制文件
shutil.copy('/path/to/source/file', '/path/to/destination/file')

移动文件

import shutil

# 移动文件
shutil.move('/path/to/source/file', '/path/to/destination/file')

递归删除目录

import shutil

# 递归删除目录及其内容
shutil.rmtree('/path/to/directory')

shutil 模块提供了众多文件和目录操作的高级功能,使得文件的操作更为简单和便捷。

glob 模块

glob 模块用于查找文件路径名匹配指定模式的所有路径名,这些模式可以包含通配符。

查找匹配的文件

import glob

# 查找所有txt文件
txt_files = glob.glob('/path/to/directory/*.txt')
print("TXT Files:", txt_files)

使用通配符

import glob

# 查找所有包含"file"的文件
matched_files = glob.glob('/path/to/directory/*file*')
print("Matched Files:", matched_files)

glob 模块允许你使用通配符来匹配文件路径,从而更便捷地找到需要操作的文件。

io 模块

io 模块提供了对流式数据的操作接口,用于读取和写入文件流。

读取文件

import io

# 读取文件
with io.open('/path/to/file.txt', 'r') as file:
    content = file.read()
    print("File Content:", content)

写入文件

import io

# 写入文件
with io.open('/path/to/new_file.txt', 'w') as file:
    file.write("Hello, this is a new file.")

io 模块提供了诸多方法,能够方便地进行文件读写操作,使得文件操作更为灵活。

zipfile 模块

zipfile 模块提供了处理ZIP文件的功能,可以创建、读取和解压缩ZIP文件。

创建ZIP文件

import zipfile

# 创建ZIP文件
with zipfile.ZipFile('new_zip.zip', 'w') as new_zip:
    new_zip.write('file.txt')

读取ZIP文件内容

import zipfile

# 读取ZIP文件内容
with zipfile.ZipFile('example.zip', 'r') as example_zip:
    files_in_zip = example_zip.namelist()
    print("Files in ZIP:", files_in_zip)

解压缩ZIP文件

import zipfile

# 解压ZIP文件
with zipfile.ZipFile('example.zip', 'r') as example_zip:
    example_zip.extractall('extracted_files')

zipfile 模块提供了对ZIP文件的创建、读取和解压缩的功能,能够轻松处理ZIP文件,使得文件压缩和解压更加方便。

tarfile 模块

tarfile 模块提供了对tar文件的创建、读取和解压缩的功能。

创建tar文件

import tarfile

# 创建tar文件
with tarfile.open('new_tar.tar', 'w') as new_tar:
    new_tar.add('file.txt')

读取tar文件内容

import tarfile

# 读取tar文件内容
with tarfile.open('example.tar', 'r') as example_tar:
    files_in_tar = example_tar.getnames()
    print("Files in TAR:", files_in_tar)

解压缩tar文件

import tarfile

# 解压tar文件
with tarfile.open('example.tar', 'r') as example_tar:
    example_tar.extractall('extracted_files')

tarfile 模块提供了对tar文件的创建、读取和解压缩的功能,可以轻松处理tar文件,使得文件的打包和解包更加方便。

csv 模块

csv 模块专门用于处理逗号分隔值(CSV)文件,提供了读取、写入和处理CSV数据的功能。

读取CSV文件

import csv

# 读取CSV文件
with open('data.csv', 'r') as file:
    csv_reader = csv.reader(file)
    for row in csv_reader:
        print(row)

写入CSV文件

import csv

# 写入CSV文件
data = [
    ['Name', 'Age'],
    ['Alice', 25],
    ['Bob', 30]
]

with open('new_data.csv', 'w', newline='') as file:
    csv_writer = csv.writer(file)
    csv_writer.writerows(data)

csv 模块提供了简单而高效的方法来读写CSV文件,并且能够轻松地处理CSV格式的数据。

json 模块

json 模块用于解析JSON数据,提供了读取、解析和创建JSON文件的功能。

读取JSON文件

import json

# 读取JSON文件
with open('data.json', 'r') as file:
    data = json.load(file)
    print(data)

解析JSON数据

import json

# 解析JSON数据
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
print(data)

创建JSON文件

import json

# 创建JSON文件
data = {
    "name": "Alice",
    "age": 30
}

with open('new_data.json', 'w') as file:
    json.dump(data, file)

json 模块提供了方便的方法来读写JSON格式的数据,能够轻松处理JSON格式的文件和数据。

pickle 模块

pickle 模块用于序列化和反序列化Python对象,使其能够在文件中存储和恢复。

对象序列化保存到文件

import pickle

# 对象序列化保存到文件
data = {
    "name": "Alice",
    "age": 30
}

with open('data.pkl', 'wb') as file:
    pickle.dump(data, file)

从文件中加载对象并反序列化

import pickle

# 从文件中加载对象并反序列化
with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)
    print(loaded_data)

pickle 模块提供了在Python对象和文件之间进行序列化和反序列化的功能,使得对象的存储和读取更加便捷。

总结

Python拥有丰富的文件操作库,为开发者提供了多样化、便捷的方式来管理、读取和写入文件。从基本的文件系统交互到处理特定文件格式,这些库覆盖了许多文件操作的方方面面。os模块提供了与操作系统交互的功能,而pathlib模块则更加面向对象。shutil模块提供高级的文件和目录操作功能,使得复制、移动和删除文件变得更为简单。glob模块允许使用通配符查找匹配的文件名。io模块提供了对流式数据的操作接口,用于读写文件流。进一步,zipfiletarfile模块处理ZIP和tar文件的创建、读取和解压。处理CSV数据则依赖于csv模块,而json模块负责解析JSON数据。最后,pickle模块允许序列化和反序列化Python对象,方便对象在文件中的存储和加载。

这些库不仅提供了对文件系统的广泛操作,还使得特定文件格式的处理更加便捷,如压缩文件、结构化数据文件以及序列化对象。了解这些库的功能和用法,能够帮助开发者更加高效地进行文件操作,同时也提供了处理不同类型文件需求的解决方案。最佳实践是根据具体任务需求选择适当的库和方法,以获得最佳的文件操作体验。


Python学习路线

在这里插入图片描述

更多资料获取

📚 个人网站:ipengtao.com

如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。

在这里插入图片描述
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

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

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

相关文章

【海思SS528 | VDEC】MPP媒体处理软件V5.0 | 视频解码模块——学习笔记

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

Golang开发之------ Beego框架

1.安装go(配置环境变量) 2.安装gorm(Goland编辑器举例): go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 3.初始化项目(首先需要在工作目录新建bin文件夹,pkg文件…

[Python入门系列之十二]安装Jupyter notebook与代码运行

引言 Jupyter Notebook将代码、图片和文本完美结合在一起,为编程学习带来了前所未有的便捷性。本文旨在为初学者提供一个关于Jupyter Notebook的入门指南。 什么是Jupyter Notebook Jupyter Notebook是一个开源的Web应用程序,允许你创建和共享包含代码…

五、初识FreeRTOS之FreeRTOS的任务创建和删除

本节主要学习以下内容: 1,任务创建和删除的API函数(熟悉) 2,任务创建和删除(动态方法)(掌握) 3,任务创建和删除(静态方法)&#xf…

大数据之 Hadoop

hadoop主要解决:海量数据的存储和海量数据的分析计算 hadoop发展历史 Google是hadoop的思想之源(Google在大数据方面的三篇论文) 2006年3月,Map-reduce和Nutch Distributed File System(NDFS)分别被纳入到Hadoop项目&#xff0c…

计算机视觉:使用dlib实现人脸检测

1 dlib介绍 Dlib是一个广泛使用的开源库,在计算机视觉和机器学习领域具有重要影响。它是由Davis King在2002年开发,主要用C语言编写,但也提供了Python接口。Dlib结合了高效的算法和易用性,使其成为学术界和工业界的热门选择。 1.…

C++基础 -18-继承中类继承的区别

无论使用公有,保护,私有继承 都无法访问基类私有成员 在多级继承中 使用公有继承 派生的派生可以访问基类的公有,保护成员 在多级继承中 使用保护继承 派生的派生可以访问基类的公有,保护成员 在多级继承中 使用私有继承 派生的派…

车辆动力学 | 轮胎纵滑和侧滑下的简化模型

1、轮胎模型的定义: ——反应轮胎力学性能(所有侧向力、纵向力以及会正力矩等)与侧偏角和运动状态(滑转率和滑移率)关系的数学模型 2、四个组成部分 胎面层、带束层、胎体、轮辋 3、简化模型的假设条件 4、起滑点&am…

电脑微信多开怎么操作?电脑微信多开bat代码

电脑微信多开怎么操作? 方法一:电脑微信多开bat代码方法二 微信是我们日常使用率很高的社交软件,在工作中因工作需要可能会用到两个微信号,如果是只登录一个微信,另外一个微信的聊天信息很容易漏看,这时候微…

<Linux>冯诺依曼体系结构||操作系统||系统调用于用户操作接口

前言:本文从软硬件角度计算机解释软硬件结构 硬件—冯诺依曼体系结构 软件—操作系统 文章目录 冯诺依曼计算机体系结构背景理解举例 操作系统(OS)OS的管理为什么要有操作系统? 系统调用与用户操作接口系统调用用户操作接口引入:printf&&scanf的重新理解库函数 计算机…

力扣 41 42.接雨水问题详细讲解,保证看完必会接雨水问题!!!时间复杂度最优解 o(n)

首先来个开胃小菜,41.缺少最小整数(难度:困难)真实感觉像是个简单级别 41. 缺失的第一个正数 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额…

干货:机器学习之线性代码基础

资料地址:https://machine-learning-from-scratch.rea 线性代数 0. 要点汇总1. 向量 Vector 1.1 向量是什么1.2 向量的运算 1.2.1 向量的加法1.2.2 向量的数乘 2. 线性组合、张成的空间与基 Linear Combination, Span and Basis 2.1 运算封闭2.2 线性组合2.2 向量…

Android进阶之路 - TextView文本渐变

那天做需求的时候,遇到一个小功能,建立在前人栽树,后人乘凉的情况下,仅用片刻就写完了;说来惭愧,我以前并未写过文本渐变的需求,脑中也仅有一个shape渐变带来的大概思路,回头来看想着…

Proteus的网络标号与总线

Proteus为了减少过多、复杂的连线,可以使用网络标号与总线配合使用。 Proteus的导线上添加了网络标号,意味着在Proteus上相同的网络标号是连在一起的,所说在图纸上看不出来。 如下图是比较好的Proteus中使用总线的绘制的图纸。可以效仿着画…

【坤坤之夜 KUNKUNNIGHT】- 探索神秘世界,开启刺激冒险之旅!

你是否准备好迎接一个充满挑战和惊喜的单机游戏体验?坤坤之夜(KUNKUNNIGHT)将带你进入一个神秘而刺激的世界,让你尽情探索,解锁各种有趣的技能和道具,解决谜题,完成各种挑战。 坤坤之夜的游戏画…

CodeMeter软件保护及授权管理解决方案(二)

客户端管理工具 CodeMeter Runtime是CodeMeter解决方案中的重要组成部分,其为独立软件包,开发者需要把CodeMeter Runtime和加密后的软件一起发布。CodeMeter Runtim包括以下组件用于实现授权的使用: CodeMeter License Server授权服务器 Co…

我叫:基数排序【JAVA】

1.自我介绍 基数排序(radix sort)属于“分配式排序” (distribution sort),又称“桶子法” (bucket sort)或bin sort,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,是‘桶排序’的扩展 2.基本思想 将所有待比较数值统一为同样的数位长度,数位较短的数…

【图论】重庆大学图论与应用课程期末复习资料(私人复习资料)

考试章节范围 第一章:1.1、1.2、1.3 填空 顶点集和边集都有限的图,称为有限图只有一个顶点的图,称为平凡图边集为空的图,称为空图顶点数为n的图,称为n阶图连接两个相同顶点的边的条数称为边的重数;重数大…

荣耀冲击高端,一边推新「修路」,一边降价「拆桥」

作者 | 辰纹 来源 | 洞见新研社 从2020年11月17日与华为分家,开启独立创业之路,到成功逆袭,今年第三季度以18%的份额重回中国智能手机市场榜首,荣耀用了3年时间。 图源:Canalys 在这三年时间内,荣耀经历…

unity学习笔记07

一、组件 有几个物体他们之间有着重复的功能,该如何避免重复的去写代码? 可以将一些相同的功能写成一个组件,也就是组件就等同于功能。 什么是组件? 在Unity中,游戏物体是不具备任何功能的,如果想要为其…