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

python常用模块(JSON与pickle、Os模块)

一、Open函数使用

        在python中,open() 函数用于打开文件,并返回一个文件对象,同时支持读取写入文件。

基本用法:

file = open(file_path, mode='r', encoding=None, newline=None)

其中file_path表示的是文件的路径,可以是相对路径或绝对路径mode表示的是用什么模式打开文件,encoding是使用什么方式进行解读newline是指定换行符的处理方式,默认值是None,表示使用系统默认的换行符处理。

(1)、mode(文件的打开模式)

        参数 mode 是用来指定文件打开模式的一个字符串参数。该参数决定了文件的操作方式,包括读取写入追加等操作。

  • 读取模式 ("r"):

    • 默认模式,用于读取文件内容。
    • 如果文件不存在,会引发 FileNotFoundError 错误。
    • f = open("./44.函数的参数.py", mode="r", encoding="utf8")
      # 能否读取
      r = f.readable()
      # 读取整个文件,并以字符串的形式返回
      r = f.read()
      # 读取一行,并返回字符串
      r = f.readline()
      # 逐行读取,并逐一放入列表中
      r = f.readlines()
  • 写入模式 ("w"):

    • 打开文件进行写入操作。
    • 如果文件已存在,则会清空文件中的内容,从头开始写入。
    • 如果文件不存在,则会创建一个新文件进行写入。
    • f = open("./44.函数的参数.py", mode="w", encoding="utf8")
      # 能否写入
      w = f.writeable()
      # 将原文件中的内容覆盖,再写入"hello world"
      w = f.write("hello world")
      
  • 追加模式 ("a"):

    • 打开文件进行追加操作,即在文件末尾添加新内容。
    • 如果文件不存在,则会创建一个新文件进行写入。
    • with open('file.txt', 'a') as file:file.write('\nAdding more content...')# 在file.txt内容的后面进行添加内容\nAdding more content...
  • 二进制模式 ("b"):

    • 以二进制模式打开文件,用于处理非文本文件,如图片、视频等。
    • 可以与读取、写入、追加模式一起使用,例如 'rb''wb''ab'
  • 文本模式 ("t" 或省略不写):

    • 默认以文本模式打开文件,用于处理文本文件。
    • 可以与读取、写入、追加模式一起使用,例如 'rt''wt''at'
  • 读写模式 ("r+"):

    • 打开文件进行读取和写入操作,文件指针位于文件开头。
    • 文件必须存在,否则会抛出 FileNotFoundError
  • 写读模式 ("w+"):

    • 打开文件进行读取和写入操作。
    • 如果文件已存在,则清空文件内容,并从头开始写入;如果文件不存在,则创建新文件。
    • 文件指针位于文件开头。
  • 追加读取模式 ("a+"):

    • 打开文件进行读取和追加操作。
    • 文件指针位于文件末尾。

(2)、encoding 

        encoding指定文件的编码方式,默认为None,表示使用系统默认的编码方式。

        encoding包括:UTF-8 ('utf-8')ASCII ('ascii')UTF-16 ('utf-16'),GBK ('gbk')。

二、JSON与pickle

(1)、JSON

        在Python中,可以使用json模块来处理JSON数据。json模块提供了一些函数来进行JSON数据的编码和解码。注:json能被所有的编程语言读取。

下面是一些常用的json函数:

  • json.loads():将JSON字符串解码为Python对象。
  • json.dumps():将Python对象编码为JSON字符串。
  • json.load():从文件中读取JSON数据并解码为Python对象。
  • json.dump():将Python对象编码为JSON格式并写入文件。

使用示例:

import json# JSON字符串解码为Python对象
json_str = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_str)
print(data['name'])  # 输出: John# Python对象编码为JSON字符串
data = {'name': 'John','age': 30,'city': 'New York'
}
json_str = json.dumps(data)
print(json_str)  # 输出: {"name": "John", "age": 30, "city": "New York"}# 从文件中读取JSON数据并解码为Python对象
with open('data.json') as json_file:data = json.load(json_file)print(data['name'])  # 输出: John# 将Python对象编码为JSON格式并写入文件
data = {'name': 'John','age': 30,'city': 'New York'
}
with open('data.json', 'w') as json_file:json.dump(data, json_file)

注意:在使用json函数时,需要将输入的字符串或文件内容符合JSON数据的格式。

(2)、pickle

        pickle模块是Python中用于对象序列化和反序列化的模块。它可以将Python对象转换成字节流,以及将字节流转换回Python对象。

        使用pickle模块,可以方便地将复杂的数据结构(如列表、字典、类等)进行序列化,并保存到文件或网络中。同时,也可以通过反序列化,将保存的数据重新转化成Python对象。

        注:pickle只能被python语言识别。

以下是pickle模块的常用函数:

  • pickle.dumps(obj): 将对象obj序列化成字节流。
  • pickle.loads(bytes):将字节流bytes反序列化成Python对象。
  • pickle.dump(obj, file):将对象obj序列化后写入文件file。
  • pickle.load(file):从文件file中读取序列化后的对象并进行反序列化。
import pickle# 创建一个字典对象
data = {'name': 'Alice', 'age': 25, 'city': 'New York'}# 将对象序列化为字节流
bytes_data = pickle.dumps(data)# 将字节流反序列化为对象
obj = pickle.loads(bytes_data)print(obj)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}

三、Os模块

        在 python 中,os 模块提供了与操作系统交互的功能。它允许您执行文件和目录操作,处理进程和环境变量,以及执行其他与操作系统相关的任务。os模块跟win系统中cmd的操作命令大致一样。

import os# 列出目录内容
dir_contents = os.listdir('/path/to/directory')
print("Directory contents:", dir_contents)# 创建目录
os.mkdir('/path/to/new/directory')# 删除目录
os.rmdir('/path/to/directory')# 判断文件或目录是否存在
exists = os.path.exists('/path/to/file_or_directory')
  1. os.path.isfile(path):检查指定路径是否为一个文件。

  2. os.path.isdir(path):检查指定路径是否为一个目录。

  3. os.path.join(path1, path2):将两个路径组合成一个新的路径。

  4. os.path.basename(path):返回指定路径的文件名。

  5. os.path.dirname(path):返回指定路径的目录名。

http://www.lryc.cn/news/402011.html

相关文章:

  • MMLab-dataset_analysis
  • 艺术与技术的交响曲:CSS绘图的艺术与实践
  • 基于 JAVA 的旅游网站设计与实现
  • 【C++深度探索】二叉搜索树的全面解析与高效实现
  • Java实习记录 1 ——初入职场
  • opencv—常用函数学习_“干货“_3
  • 用Docker来开发
  • 从0开始的STM32HAL库学习2
  • 【MySQL篇】Percona XtraBackup工具备份指南:常用备份命令详解与实践(第二篇,总共五篇)
  • Spock单元测试框架使用介绍和实践
  • web安全之跨站脚本攻击xss
  • TCP与UDP的理解
  • 有效应对服务器遭受CC攻击的策略与实践
  • STM32判断休眠
  • TikTok内嵌跨境商城全开源_搭建教程/前端uniapp+后端源码
  • 前端学习(二)
  • 链接追踪系列-10.mall-swarm微服务运行并整合elk-上一篇的番外
  • 用Agent大模型,我发现了Prompt工程师的10大必备技能
  • 【GraphRAG】微软 graphrag 效果实测
  • 十大常用加密软件排行榜|2024企业常用加密软件推荐
  • lua 游戏架构 之 资源加载 LoaderManager (一)
  • 【人工智能】-- 迁移学习
  • Flink源码学习资料
  • HarmonyOS4.0开发-环境配置
  • GESP CCF C++ 三级认证真题 2024年6月
  • 华为的热机备份和流量限制
  • Vite的WebSocket
  • Vue3项目基于Axios封装request请求
  • html(抽奖设计)
  • Linux·权限与工具(上)