Working with CSV, JSON, and Binary Files in Python

working with csv, json, and binary files in python

在这个博客系列中,我们将探索如何在 python 中处理文件,从基础知识开始,逐步进展到更高级的技术。

在本系列结束时,您将对 python 中的文件操作有深入的了解,使您能够有效地管理和操作文件中存储的数据。

该系列将由五篇文章组成,每篇文章都建立在上一篇文章的知识之上:

  • python 文件处理简介:读写文件
  • 使用不同的文件模式和文件类型
  • python 中处理大文件和文件操作
  • 使用上下文管理器和异常处理来实现稳健的文件操作
  • (本文)高级文件操作:使用 csv、json 和二进制文件

到目前为止,在 python 文件处理系列中,我们已经介绍了读写文件、处理大文件以及通过上下文管理器和异常处理确保稳健的文件操作的基础知识。

最后一篇文章将探讨高级文件操作,重点关注 csv、json 和二进制文件等常见格式。

这些格式广泛用于数据交换和存储,掌握如何使用它们将为您提供在 python 中有效处理各种文件类型的工具。


使用 csv 文件

csv(逗号分隔值)文件通常用于存储表格数据,例如电子表格或数据库。

python 通过内置的 csv 模块使处理 csv 文件变得容易,该模块提供了读取和写入 csv 文件的功能。

读取 csv 文件

要读取 csv 文件,我们使用 csv.reader() 函数,该函数返回一个读取器对象,可以迭代该对象来访问文件中的行。

示例:读取 csv 文件

import csv

# open the csv file for reading
with open('data.csv', 'r') as file:
    reader = csv.reader(file)

    # iterate through each row in the csv
    for row in reader:
        print(row)

在此示例中,我们使用上下文管理器打开 csv 文件,并使用 csv.reader() 逐行读取它。

每一行都作为值列表返回,从而可以轻松处理数据。

读取带标题的 csv 文件

如果您的 csv 文件有标题,您可以使用 csv.dictreader() 函数将每一行作为字典访问,其中键是列标题。

import csv

# open the csv file with headers
with open('data_with_headers.csv', 'r') as file:
    reader = csv.dictreader(file)

    # iterate through each row, accessing values by column name
    for row in reader:
        print(f"name: {row['name']}, age: {row['age']}")

在这种情况下,dictreader() 函数将 csv 的第一行视为标题,允许您通过标题名称引用列。

写入 csv 文件

写入 csv 文件同样简单。

csv.writer() 函数创建一个 writer 对象,允许您将行写入文件。

示例:写入 csv 文件

import csv

# data to write to csv
data = [
    ["name", "age", "occupation"],
    ["alice", 30, "engineer"],
    ["bob", 25, "designer"],
    ["charlie", 35, "teacher"]
]

# open a csv file for writing
with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)

    # write each row of data
    writer.writerows(data)

在此示例中,我们使用 writer.writerows() 将多行数据写入 csv 文件。

数据列表中的每个子列表代表 csv 中的一行。


使用 json 文件

json(javascript 对象表示法)是一种轻量级数据交换格式,易于人类阅读和编写,也易于机器解析和生成。

python json 模块提供了读取和写入 json 文件的函数,使其成为处理结构化数据的通用格式。

读取 json 文件

python 中读取 json 文件就像使用 json.load() 函数一样简单,该函数将 json 数据转换为 python 数据结构(例如字典或列表)。

示例:读取 json 文件

import json

# open and read the json file
with open('data.json', 'r') as file:
    data = json.load(file)

# accessing json data as a python dictionary
print(data['name'])
print(data['age'])

在此示例中,我们将 json 数据加载到 python 字典中,并通过键访问各个元素。

写入 json 文件

要将python数据写入json文件,可以使用json.dump()函数。

该函数将 python 对象序列化为 json 格式的字符串并将其写入文件。

示例:写入 json 文件

import json

# data to write to json
data = {
    "name": "alice",
    "age": 30,
    "occupation": "engineer"
}

# open a json file for writing
with open('output.json', 'w') as file:
    json.dump(data, file, indent=4)

在此示例中,我们将 python 字典写入 json 文件。

indent=4 参数确保 json 输出的格式良好,并带有缩进,以提高可读性。


使用二进制文件

二进制文件以二进制格式存储数据,用于图像、音频、视频和序列化数据等非文本数据。

与文本文件不同,您需要以二进制模式('rb'、'wb')打开二进制文件才能读取或写入它们。

读取二进制文件

要读取二进制文件,您可以以“rb”模式打开它并以字节形式读取数据。

示例:读取二进制文件

# open the binary file for reading
with open('image.png', 'rb') as file:
    binary_data = file.read()

# print the first 10 bytes of the file
print(binary_data[:10])

在此示例中,我们以二进制模式打开一个图像文件并以字节形式读取其内容。

然后,您可以根据您的用例处理二进制数据(例如图像处理、音频处理)。

写入二进制文件

写入二进制数据同样简单。

您需要以“wb”模式打开文件并将数据以字节形式写入。

示例:写入二进制文件

# Binary data to write
binary_data = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR'

# Open the binary file for writing
with open('output_image.png', 'wb') as file:
    file.write(binary_data)

在此示例中,我们将二进制数据写入文件,该文件可以是图像、音频或任何其他二进制格式的一部分。


结论

在这篇文章中,我们探索了 python 中的高级文件操作,重点是处理 csv、json 和二进制文件。

每种格式都有自己的用例,python 提供了简单的内置工具来帮助您有效地读取和写入这些文件类型。

  • csv:非常适合表格数据,并且可以使用 csv 模块轻松处理。
  • json:非常适合结构化数据,尤其是在使用 api 和 web 数据时。
  • 二进制文件:适用于图像、音频和视频等非文本数据,可以使用二进制模式处理。

通过这些技术,您现在可以在 python 中处理各种文件格式,使您的程序更加通用并能够处理各种数据。

感谢您关注 python 文件处理系列!

以上就是Working with CSV, JSON, and Binary Files in Python的详细内容,更多请关注其它相关文章!