python文件处理:txt、json、xml

一、文件与路径

os.path对象的各种方法可以实现对路径的各种操作。

os.path.abspath(os.curdir)    # 获取当前目录的绝对路径
os.path.abspath(__file__)      # 获取当前文件的绝对路径
os.path.exists(path1)                 # 判断路径是否存在
os.path.isfile(path1)                 # 判断路径是否为文件
os.path.isdir(path1)                  # 判断路径是否为目录
os.makedirs(path1 + '/test')          # 创建目录
os.rmdir(path1 + '/test')             # 删除目录
os.rename(path1 + '/test.txt', path1 + '/test1.txt')    # 重命名文件
os.remove(path1 + '/test1.txt')                      # 删除文件 
os.listdir(path1)                     # 列出目录下的文件和目录
os.path.join(path1, 'test2.txt')      # 拼接路径
os.path.split(path1 + '/test2.txt')   # 分割路径
os.path.splitext(path1 + '/test2.txt') # 分离文件名和扩展名

二、文本文件

1.open

newfile = open("newfile.txt", "w")
newfile.write("Hello, world!")
newfile.close()

2.with open(推荐)

with open("newfile.txt", "w") as newfile:
    newfile.write("Hello, world!")

3.区别

open 函数:需要手动调用 close 方法来关闭文件,一般要考虑异常处理。
with open 语句:自动管理文件的打开和关闭,即使在发生异常时也能确保文件被正确关闭。

4.文件打开模式

图片[1] - python文件处理:txt、json、xml - 正则时光

4.文件读写操作

newfile.write(s)     # 写入内容
newfile.read()        # 读内容   read(size) 可以指定读取多少字符,未指定时读取全部
newfile.readline()   # 一次读取一行
newfile.readlines()   # 以列表方式读取,一行是列表的一个元素
newfile.tell()        # 获取当前文件可以读写的位置
newfile.seek()         # 重新指定将要读写的位置

三、Json格式文件

使用标准库Json模块来进行Json文件处理。

1.Json与Python语言数据类型互相转化

图片[2] - python文件处理:txt、json、xml - 正则时光

2.转化示例

import json

# 示例1:将Python数据类型转换为JSON字符串
data = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}
json_str = json.dumps(data)
print("JSON字符串:", json_str)

# 示例2:将JSON字符串转换为Python数据类型
json_str = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_str)
print("Python数据类型:", data)

# 示例3:将Python数据类型写入JSON文件
with open('data.json', 'w') as f:
    json.dump(data, f)

# 示例4:从JSON文件读取Python数据类型
with open('data.json', 'r') as f:
    data = json.load(f)
print("从文件读取的Python数据类型:", data)

3.dump与dumps、load与loads

dump 和 dumps:

dump 用于将Python对象序列化为JSON并写入文件。
dumps 用于将Python对象序列化为JSON字符串。

load 和 loads:

load 用于从文件中读取JSON数据并反序列化为Python对象。
loads 用于将JSON字符串反序列化为Python对象。

四、xml文件

标准库提供了xml库来处理xml文件,同时提供以下四个来同的子类都 可以用来来处理xml文件。

  1. DOM: 适用于需要全面访问和操作XML文档的场景。
  2. ElementTree: 适用于大多数XML处理任务,特别是对于中等大小的XML文档。
  3. Expat: 适用于处理非常大的XML文档,或者需要实时处理XML数据的场景。
  4. SAX: 适用于处理非常大的XML文档,或者需要实时处理XML数据的场景。

1.SAX

  • 重写父类xml.sax.ContentHandler的一些方法,来处理xml数据。
  • 创建一个解析器, 并设置解析器的事件处理器为我们创建的上面的子类。
  • 然后解析xml文件即可
图片[3] - python文件处理:txt、json、xml - 正则时光

2.DOM(常用推荐)

xml.dom提供了两种解析器:xml.dom.minidom和xml.dom.pulldom。

1)xml.dom.minidom子模块

主要提供对xml文档的读、修改操作(在内存)。返回一个xml文件的一个文档对象Document

xml.dom.minidom.parse('learning_list.xml')

2)xml.dom.pulldom子模块

主要提供对xml文档的读取、修改(在内存)、创建操作。返回一个xml文件的DOMEventStream对象。

xml.dom.pulldom.parse('learning_list.xml')
图片[4] - python文件处理:txt、json、xml - 正则时光
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享