首页 > 编程语言 >Python文件与数据处理:掌握I/O操作与序列化的艺术

Python文件与数据处理:掌握I/O操作与序列化的艺术

时间:2024-07-17 19:25:10浏览次数:20  
标签:Python pickle data json 数据处理 path 序列化 os

在Python编程的世界里,文件操作和数据序列化犹如画家手中的画笔和调色板,是构建强大应用程序不可或缺的工具。本文将深入探讨open()函数的巧妙使用、JSON和pickle模块的序列化魔法,以及os模块在文件系统操作中的关键角色。让我们一同揭开Python文件与数据处理的神秘面纱,掌握I/O操作与序列化的艺术。

一. open()函数:打开数据世界的大门

open()函数是Python中用于打开文件的内置函数。它允许我们以不同的模式打开文件进行读写操作就像一把神奇的钥匙。

基本语法:
file = open(file, mode='r', encoding=None)
主要参数:

file: 文件路径
mode: 打开模式
encoding: 编码方式

常用的打开模式包括:

'r': 只读模式(默认)
'w': 只写模式(覆盖已有内容)
'a': 追加模式
'r+': 读写模式
'w+': 读写模式(覆盖已有内容)
'rb': 二进制读取模式
'wb': 二进制写入模式

示例:
# 读取文件
with open('example.txt', 'r') as f:
    content = f.read()
    print(content)

# 写入文件
with open('example.txt', 'w') as f:
    f.write('Hello, World!')

# 追加内容
with open('example.txt', 'a') as f:
    f.write('\nThis is a new line.')

二. json与pickle:数据序列化的双剑客

json和pickle都是用于数据序列化的模块,但它们有一些关键区别:

  1. json是一种轻量级的数据交换格式,可以在不同编程语言之间使用。
  2. pickle是Python特有的序列化模块,只能在Python中使用。

1.json

JSON模块提供了dumps()和loads()函数用于序列化和反序列化:

import json

# 序列化
data = {'name': 'John', 'age': 30}
json_string = json.dumps(data)

# 反序列化
parsed_data = json.loads(json_string)

# 直接写入文件
with open('data.json', 'w') as f:
    json.dump(data, f)

# 从文件读取
with open('data.json', 'r') as f:
    loaded_data = json.load(f)

2.pickle

pickle模块的使用方式与json类似:

import pickle

# 序列化
data = {'name': 'John', 'age': 30}
pickle_string = pickle.dumps(data)

# 反序列化
parsed_data = pickle.loads(pickle_string)

# 直接写入文件
with open('data.pickle', 'wb') as f:
    pickle.dump(data, f)

# 从文件读取
with open('data.pickle', 'rb') as f:
    loaded_data = pickle.load(f)

三. os模块:文件系统的全能管家

在python中os模块提供了许多用于与操作系统交互的函数,特别是文件和目录操作。os模块就像一位无所不能的管家,它了解操作系统的每一个角落,能够帮助我们轻松地管理文件、操作目录、获取系统信息。让我们看看这位"全能管家"都有哪些绝技:

一些常用的os模块函数:

import os

# 获取当前工作目录
current_dir = os.getcwd()

# 改变当前工作目录
os.chdir('/path/to/new/directory')

# 列出目录内容
files = os.listdir()

# 创建新目录
os.mkdir('new_directory')

# 删除目录
os.rmdir('directory_to_remove')

# 获取CPU核心数
cpu_count = os.cpu_count()

# 检查路径是否存在
exists = os.path.exists('/path/to/check')

# 检查是否为文件
is_file = os.path.isfile('/path/to/check')

# 检查是否为目录
is_dir = os.path.isdir('/path/to/check')

# 分割路径
path, filename = os.path.split('/path/to/file.txt')

# 合并路径
full_path = os.path.join('path', 'to', 'file.txt')

# 获取绝对路径
abs_path = os.path.abspath('relative/path')

# 获取当前文件的目录
current_file_dir = os.path.dirname(__file__)

os.path子模块提供了许多有用的路径操作函数:

os.path.exists(): 检查路径是否存在
os.path.isfile(): 检查是否为文件
os.path.isdir(): 检查是否为目录
os.path.split(): 分割路径的最后一部分和前面的路径
os.path.join(): 智能地连接多个路径部分
os.path.abspath(): 返回绝对路径
os.path.dirname(): 返回路径的目录名

示例:
import os
# 创建一个新目录
os.mkdir('example_dir')

# 切换到新目录
os.chdir('example_dir')

# 创建一个文件
with open('test.txt', 'w') as f:
    f.write('Hello, World!')

# 列出目录内容
print(os.listdir())  # 输出: ['test.txt']

# 获取文件的绝对路径
abs_path = os.path.abspath('test.txt')
print(abs_path)

# 分割路径
path, filename = os.path.split(abs_path)
print(f"Path: {path}")
print(f"Filename: {filename}")

# 切换回上级目录
os.chdir('..')

# 删除创建的目录
os.rmdir('example_dir')

这个示例展示了如何使用os模块创建目录、切换目录、创建文件、列出目录内容、获取绝对路径、分割路径,以及删除目录。

总结:

1. open()函数用于文件的读写操作,提供了多种模式来满足不同需求。
2. JSON和pickle模块用于数据的序列化和反序列化,JSON更适合跨语言使用,而pickle专用于Python。
3. os模块提供了丰富的操作系统级别的功能,特别是文件和目录操作,使得Python程序能够方便地与操作系统交互。

通过掌握这些工具和技术,你将能够更有效地处理文件、管理数据和与操作系统交互,从而编写出更强大和灵活的Python程序。

标签:Python,pickle,data,json,数据处理,path,序列化,os
From: https://blog.csdn.net/m0_74252611/article/details/140503189

相关文章

  • python ssl报错 aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot
    报错信息原代码:asyncwithsession.post(url,headers=headers,data=payload)asresponse:print(f"{id}签到结果:",awaitresponse.text())原因:在使用aiohttp进行HTTPS请求时,如果没有设置正确的SSL证书验证,就可能会出现以上问题解决办法忽略SSL......
  • Netcode for Entities如何添加自定义序列化,让GhostField支持任意类型?以int3为例(1.2.3
    一句话省流:很麻烦也很抽象,能用内置支持的类型就尽量用。首先看文档。官方文档里一开头就列出了所有内置的支持的类型:GhostTypeTemplates其中Entity类型需要特别注意一下:在同步这个类型的时候,如果是刚刚Instantiate的Ghost(也就是GhostId尚未生效,上一篇文章里说过这个问题),那么客......
  • python 利用simpy工具包设计一个仿真应用
    这里仿真了一个直行红绿灯路口。假设有一条红绿灯路口的直行车道(假设只有一条,一条和多条相似),现在有一些车要过红绿灯,绿灯20s,黄灯5s,路口40m这里采用网上五菱宏光s的加速度和刹车数据,零百14.3s左右,100码刹车42m,仪器显示加速度数值约为40km/h我们假设均匀加减速,启动加速度取2m/s^2,......
  • 第二课堂笔记:python入门
    数据类型和操作python的常见数据类型标准数据类型不可变数据Number(数字)String(字符串)Tuple(元组)可变数据List(列表)Set(集合)Dictionary(字典)其他Type(类型)Numberint(整数)离散的数据类型float(浮点数)浮点数误差:​ 精确计算浮点数importdecimala=decimal.......
  • [oeasy]python0025_ 顺序执行过程_流水_流程_执行次序
    顺序执行过程_流水_流程_执行次序......
  • python 中深浅拷贝
    #等号赋值#l0=[1,3,5]#l2=[1,3,5]#l0.append(7)#print(l0,l2)#print(l0==l2,l0isl2,id(l0),id(l2))#等号赋值:直接赋予内存地址两个变量最终还是同一个内存地址#修改一个另一个同步更改#l0=[1,3,5]#l2=l0#l0.append(7)#pri......
  • Clarke-Wright节约算法详解与Python代码示例
    Clarke-Wright节约算法详解与Python代码示例一、算法详解Clarke-Wright节约算法(简称C-W算法),也称为节约里程法或节约算法,是由Clarke和Wright于1964年提出的一种启发式算法。该算法主要用于解决车辆路径问题(VehicleRoutingProblem,VRP),特别是在运输车辆数目不确定的情况下......
  • 小一保姆级 Python 文件操作与管理详解
    Python文件操作与管理在Python编程中,文件操作是日常任务中不可或缺的一部分。本文将介绍Python中三个重要的文件相关模块和功能:open函数、json与pickle库、以及os模块的使用。1. open 函数的使用Python中的open函数是用来打开文件的核心函数。它提供了多种......
  • 【Python】从基础到进阶(四):深入了解Python中的控制流
    ......
  • 【Python】CSS与选择器
        ......