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

Python中使用处理数据、路径的2个方法,对应两个第三方库

Python中使用dataclass 处理数据、pathlib处理路径

dataclass装饰器

主要用于存储数据的类。下面将详细介绍它的用法:

1. 基本用法

dataclass 能够自动生成特殊方法,像 __init____repr____eq__ 等。以下是一个简单的示例:

from dataclasses import dataclass@dataclass
class Person:name: strage: int# 创建一个 Person 对象
p = Person("Alice", 30)# 打印对象,自动调用 __repr__ 方法
print(p)  # 比较两个对象,自动调用 __eq__ 方法
p2 = Person("Alice", 30)
print(p == p2)  

2. 默认值

你可以为类的属性设定默认值:

from dataclasses import dataclass@dataclass
class Person:name: str = "Unknown"age: int = 0p = Person()
print(p)  

3. 不可变数据类

让数据类的实例不可变,可将 frozen 参数设为 True

from dataclasses import dataclass@dataclass(frozen=True)
class Point:x: inty: intp = Point(1, 2)
# 以下代码会抛出异常,因为实例是不可变的
# p.x = 3  

4. 自定义方法

数据类同样可以包含自定义方法:

from dataclasses import dataclass@dataclass
class Rectangle:width: floatheight: floatdef area(self):return self.width * self.heightr = Rectangle(3, 4)
print(r.area())  

5. 字段元数据

你可以使用 field 函数为字段添加元数据:

from dataclasses import dataclass, field@dataclass
class InventoryItem:name: strunit_price: floatquantity_on_hand: int = field(default=0, metadata={'unit': 'pieces'})def total_cost(self):return self.unit_price * self.quantity_on_handitem = InventoryItem("Widget", 10.0, 5)
print(item.total_cost())  

dataclass 减少样板代码,简单实现数据管理类的编写、维护。

pathlib.Path

Python 标准库 pathlib 模块提供的一个用于处理文件系统路径的类。

pathlib.Path 的用途

1. 基础用法

pathlib.Path 提供了面向对象的接口来处理文件和目录路径,使代码更具可读性和可维护性。基础用法:

from pathlib import Path# 创建一个 Path 对象
path = Path('example_dir') / 'example_file.txt'# 获取文件名
filename = path.name
print(filename)# 获取文件扩展名
extension = path.suffix
print(extension)
2. 跨平台兼容性

不同操作系统使用不同的路径分隔符(如 Windows 使用反斜杠 \,而 Unix-like 系统使用正斜杠 /)。pathlib.Path 会自动处理这些差异,确保你的代码在不同操作系统上都能正常工作。例如:

from pathlib import Path# 在 Windows 和 Unix-like 系统上都能正确处理
path = Path('parent_dir') / 'child_dir' / 'file.txt'
3. 文件和目录操作

pathlib.Path 提供了一系列方法来执行文件和目录操作,如创建、删除、重命名等。例如:

from pathlib import Path# 创建一个新的目录
new_dir = Path('new_directory')
new_dir.mkdir(exist_ok=True)# 创建一个新的文件并写入内容
file_path = new_dir / 'test.txt'
file_path.write_text('Hello, World!')# 读取文件内容
content = file_path.read_text()
print(content)# 删除文件和目录
file_path.unlink()
new_dir.rmdir()
4. 路径遍历和搜索

遍历目录树和搜索文件。例如,查找当前目录下所有的 Python 文件:

from pathlib import Path# 查找当前目录下所有的 Python 文件
python_files = Path('.').glob('*.py')
for file in python_files:print(file)

与直接使用字符串的区别

1. 可读性和可维护性

使用 pathlib.Path 可以使代码更具可读性

字符串拼接路径:

# 使用字符串拼接路径
file_path = 'parent_dir' + '/' + 'child_dir' + '/' + 'file.txt'

使用 pathlib.Path 拼接路径:

from pathlib import Path# 使用 Path 对象拼接路径
file_path = Path('parent_dir') / 'child_dir' / 'file.txt'
2. 错误处理

pathlib.Path 会自动处理路径分隔符和转义字符等问题

# Windows 上使用字符串表示路径
windows_path = 'C:\\Users\\username\\Documents\\file.txt'# 或者使用原始字符串
windows_path = r'C:\Users\username\Documents\file.txt'

使用 pathlib.Path

from pathlib import Path# Windows 上使用 Path 对象表示路径
windows_path = Path('C:/Users/username/Documents/file.txt')
3. 功能丰富性

pathlib.Path 提供了丰富的方法和属性来执行各种文件和目录操作

# 使用字符串检查文件是否存在
import osfile_path = 'test.txt'
if os.path.exists(file_path):print('文件存在')

使用 pathlib.Path

from pathlib import Pathfile_path = Path('test.txt')
if file_path.exists():print('文件存在')

写在最后,建议在 Python 代码中优先使用 pathlib.Path 来代替直接使用字符串表示路径。

http://www.xdnf.cn/news/9573.html

相关文章:

  • 基于RPA技术的ECRobot企业智能体解决方案,打通企业自动化业务流程的最后一公里
  • Vim文本编辑器快捷键用法以及简单介绍
  • 【25-cv-05716】GBC代理Crye Precision军事装备商标版权维权案
  • 第J9周:Inception v3算法实战与解析
  • 华为OD机试_2025 B卷_报文响应时间(Python,100分)(附详细解题思路)
  • 区域人数异常检测算法AI智能分析网关V4构建工业/商业/工地/景区等多场景解决方案
  • 使用Nginx + Keepalived配置实现Web站点高可用方案
  • 【PhysUnits】15 类型整数基本结构体补充P1(basic.rs)
  • cs224w课程学习笔记-第12课
  • java反序列化之链子分析及利用
  • 边缘计算新基建:iVX 轻量生成模块的 ARM 架构突围
  • 程序员出海之英语-使用手册
  • Ubuntu22.04 重装后,串口无响应
  • 什么是绩效管理,如何科学实施
  • 数据标注对于模型训练的重要性
  • Python 训练营打卡 Day 38
  • 智慧场馆:科技赋能的艺术盛宴
  • Bug 背后的隐藏剧情
  • 【GESP真题解析】第 14 集 GESP 二级 2024 年 6 月编程题 1:平方之和
  • 如何提升高精度滚珠螺杆的生产效率?
  • RabbitMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 选型指南(一)
  • Linux 常用命令 -md5sum【计算和校验文件的MD5哈希值】
  • web第七次课后作业--springbootWeb响应
  • 【C++基础知识】【ASAN】
  • 【207】VS2022 C++对unsigned char某一位(bit)的数据进行读写
  • dify本地部署的怎么更新新版本
  • matlab实现图像压缩编码
  • 4.8.3 利用SparkSQL统计每日新增用户
  • 微信小程序返回上一页监听
  • PG技术分享