Python读取和写入txt、Excel文件和JSON文件的方法

Python 提供了多种方法来读取和写入不同类型的文件,包括文本文件(txt)、Excel 文件和 JSON 文件,本文给大家介绍了一些常用的方法和示例代码,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

目录
  • 读取/写入 txt 文件
    • 基本读取txt
      • 读取 txt 文件
      • 写入 txt 文件
      • 按行读取复杂数据
      • 处理大txt文本文件(逐行读取以节省内存)
  • 读取/写入 Excel 文件
    • 基本读取
      • 读取 Excel 文件
      • 写入 Excel 文件
      • 处理复杂 Excel 文件(多个工作表)
      • 处理大 Excel 文件(使用 pandas 的 chunksize 参数)
  • 读取/写入 JSON 文件
    • 基本读取
      • 基本读取 JSON 文件
      • 写入 JSON 文件
    • 读取嵌套数据:
      • 读取嵌套json文件:
      • 写入嵌套 JSON 数据
    • 复杂读取json文件
      • 方法一:逐行读取并解析每行 JSON
      • 方法二:逐行读取并解析嵌套 JSON
      • 方法三:处理大 JSON 文件(分块读取)
      • 方法四:使用 jsonlines 库

Python 提供了多种方法来读取和写入不同类型的文件,包括文本文件(txt)、Excel 文件和 JSON 文件。以下是一些常用的方法和示例代码:

读取/写入 txt 文件

基本读取txt

读取 txt 文件

  • 使用内置的 open 函数
# 读取整个文件内容
with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()
    print(content)

# 逐行读取文件内容
with open('example.txt', 'r', encoding='utf-8') as file:
    for line in file:
        print(line.strip())

写入 txt 文件

  • 使用内置的 open 函数
# 写入文本到文件(覆盖模式)
with open('example.txt', 'w', encoding='utf-8') as file:
    file.write('Hello, World!\n')

# 追加文本到文件
with open('example.txt', 'a', encoding='utf-8') as file:
    file.write('Appending a new line.\n')

按行读取复杂数据

  • 逐行读取并处理每行数据
# 假设我们的文件内容如下:
# Name, Age, City
# Alice, 30, New York
# Bob, 25, Los Angeles

with open('example.txt', 'r', encoding='utf-8') as file:
    header = file.readline().strip().split(', ')
    data = []
    for line in file:
        values = line.strip().split(', ')
        record = dict(zip(header, values))
        data.append(record)
    print(data)

处理大txt文本文件(逐行读取以节省内存)

# 逐行读取大文件
with open('large_file.txt', 'r', encoding='utf-8') as file:
    for line in file:
        process_line(line)  # 自定义的处理函数

读取/写入 Excel 文件

基本读取

读取 Excel 文件

  • 使用 pandas 库
import pandas as pd

# 读取 Excel 文件
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
print(df)
  • 使用 openpyxl 库(适用于 .xlsx 文件)
from openpyxl import load_workbook

# 读取 Excel 文件
wb = load_workbook('example.xlsx')
sheet = wb['Sheet1']
for row in sheet.iter_rows(values_only=True):
    print(row)

写入 Excel 文件

  • 使用 pandas 库
import pandas as pd

# 创建一个 DataFrame
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)

# 写入 Excel 文件
df.to_excel('example.xlsx', sheet_name='Sheet1', index=False)
  • 使用 openpyxl 库
from openpyxl import Workbook

# 创建一个新的 Excel 文件
wb = Workbook()
sheet = wb.active
sheet.title = 'Sheet1'

# 写入数据
sheet.append(['Name', 'Age'])
sheet.append(['Alice', 25])
sheet.append(['Bob', 30])

# 保存文件
wb.save('example.xlsx')

处理复杂 Excel 文件(多个工作表)

  • 使用 pandas 读取多个工作表
import pandas as pd

# 读取 Excel 文件的所有工作表
xls = pd.ExcelFile('example.xlsx')
sheets = {}
for sheet_name in xls.sheet_names:
    sheets[sheet_name] = pd.read_excel(xls, sheet_name=sheet_name)
    print(f"Sheet: {sheet_name}")
    print(sheets[sheet_name])
  • 使用 openpyxl 逐行读取
from openpyxl import load_workbook

# 读取 Excel 文件
wb = load_workbook('example.xlsx')
for sheet_name in wb.sheetnames:
    sheet = wb[sheet_name]
    print(f"Sheet: {sheet_name}")
    for row in sheet.iter_rows(values_only=True):
        print(row)

处理大 Excel 文件(使用 pandas 的 chunksize 参数)

import pandas as pd

# 逐块读取大 Excel 文件
chunk_size = 1000
for chunk in pd.read_excel('large_file.xlsx', sheet_name='Sheet1', chunksize=chunk_size):
    process_chunk(chunk)  # 自定义的处理函数

读取/写入 JSON 文件

基本读取

基本读取 JSON 文件

  • 使用内置的 json 模块
import json

# 读取 JSON 文件
with open('example.json', 'r', encoding='utf-8') as file:
    data = json.load(file)
    print(data)

写入 JSON 文件

  • 使用内置的 json 模块
import json

# 数据
data = {'name': 'Alice', 'age': 25}

# 写入 JSON 文件
with open('example.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

读取嵌套数据:

读取嵌套json文件:

  • 读取嵌套 JSON 数据
import json

# 假设我们的 JSON 文件内容如下:
# {
#     "name": "Alice",
#     "age": 30,
#     "address": {
#         "city": "New York",
#         "zipcode": "10001"
#     },
#     "phones": ["123-456-7890", "987-654-3210"]
# }

with open('example.json', 'r', encoding='utf-8') as file:
    data = json.load(file)
    print(data)

# 访问嵌套数据
print(data['address']['city'])  # 输出: New York
print(data['phones'][0])  # 输出: 123-456-7890

写入嵌套 JSON 数据

import json

# 嵌套数据
data = {
    "name": "Alice",
    "age": 30,
    "address": {
        "city": "New York",
        "zipcode": "10001"
    },
    "phones": ["123-456-7890", "987-654-3210"]
}

# 写入 JSON 文件
with open('example.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

复杂读取json文件

按行读取 JSON 文件在处理大文件或流式处理数据时非常有用。以下是一些方法来按行读取 JSON 文件:

方法一:逐行读取并解析每行 JSON

如果 JSON 文件每行都是一个独立的 JSON 对象,可以逐行读取并解析每行:

import json

# 假设我们的 JSON 文件内容如下,每行是一个独立的 JSON 对象:
# {"name": "Alice", "age": 30}
# {"name": "Bob", "age": 25}

with open('example.json', 'r', encoding='utf-8') as file:
    for line in file:
        data = json.loads(line.strip())
        print(data)

方法二:逐行读取并解析嵌套 JSON

如果 JSON 文件是一个包含多个对象的数组,可以使用 ijson 库逐行解析嵌套 JSON 数据:

import ijson

# 假设我们的 JSON 文件内容如下:
# [
#     {"name": "Alice", "age": 30},
#     {"name": "Bob", "age": 25}
# ]

with open('example.json', 'r', encoding='utf-8') as file:
    parser = ijson.parse(file)
    for prefix, event, value in parser:
        if prefix.endswith('.name') and event == 'string':
            print(f"Name: {value}")
        elif prefix.endswith('.age') and event == 'number':
            print(f"Age: {value}")

方法三:处理大 JSON 文件(分块读取)

对于非常大的 JSON 文件,可以考虑分块读取和处理:

import json

def process_chunk(chunk):
    for line in chunk:
        data = json.loads(line.strip())
        print(data)

chunk_size = 1000  # 每次读取1000行

with open('large_file.json', 'r', encoding='utf-8') as file:
    chunk = []
    for line in file:
        chunk.append(line)
        if len(chunk) >= chunk_size:
            process_chunk(chunk)
            chunk = []
    if chunk:
        process_chunk(chunk)

方法四:使用 jsonlines 库

jsonlines 库专门用于处理每行一个 JSON 对象的文件:

import jsonlines

# 假设我们的 JSON 文件内容如下,每行是一个独立的 JSON 对象:
# {"name": "Alice", "age": 30}
# {"name": "Bob", "age": 25}

with jsonlines.open('example.json') as reader:
    for obj in reader:
        print(obj)

这些方法可以帮助你按行读取 JSON 文件,根据文件的具体结构和大小选择合适的方法来处理数据。
以上是一些常见的方法来读取和写入 txt、Excel 和 JSON 文件。每种方法都有其优缺点,选择哪种方法取决于具体的需求和使用场景。

以上就是Python读取和写入txt、Excel文件和JSON文件的方法的详细内容,更多关于Python读取和写入txt、Excel和JSON的资料请关注昆居客【www.kunjuke.com】其它相关文章!

相关推荐:

华为 MateBook Pro 笔记本获 HarmonyOS 6.1.0.130 SP15 升级,支持连接相机读取其中的照片和视频

感谢网友 易团俊、MeoW粉丝小明、雨雪载途 的线索投递! 7 月 2 日消息,华为 MateBook Pro 鸿蒙笔记本今日开启了鸿蒙 HarmonyOS 6.1.0.130 SP15 版本升级,系统包大小约 2.16GB。据介绍,通过本次更新新增用户分级管理能力,多用户使用场景更安全;支持连接相机读取其中的照片和视频;此外还优化了设备在文件管理、浏览器等多种场景下的使用体验。附华为 MateB...

手机文件管理器如何重命名文件

手机文件管理器重命名功能用于快速修改文档、照片等文件名以提升查找效率;系统自带工具支持单文件长按重命名并需保留扩展名,批量重命名则需借助“一键批量重命名”或Solid Explorer等第三方APP,不同品牌手机操作路径略有差异。 你想在手机上快速改掉一个文档、照片或下载文件的旧名字,让它更清晰好找,不用打开电脑也能当场完成——这正是手机文件管理器重命名功能的核心用途。 用系统自带文件管理器重命名...

谷歌浏览器如何禁止网页调用Clipboard_Write_谷歌浏览器防自动写入剪贴板

禁止网页调用 Clipboard.write 有五种独立管控方法:一、禁用特定网站剪贴板权限;二、全局关闭所有网站剪贴板写入;三、通过启动参数禁用 ClipboardImageWrite;四、用 Tampermonkey 脚本劫持 write 行为;五、禁用实验性 Web 平台功能以移除 clipboard API。 如果您发现网页在未获明确许可的情况下调用 navigator.clipboard...

手机文件管理器如何移动文件

用手机文件管理器移动文件需先选中目标文件(最多100个),点击“移动”后手动导航至目标文件夹(如“工作/2026合同”),再点√确认;操作不可逆,同名文件将被默认覆盖。 想把手机里杂乱的文件归类整理,或者把下载好的资料挪到指定文件夹,就得用文件管理器移动文件。这一步操作不难,但选错目标位置或误点删除,文件就可能找不回来。 进入文件管理并选中目标文件 打开手机自带的【文件管理】应用(不是微信文件传输...

手机文件管理器如何解压文件

手机解压需分安卓/iOS:安卓用原生文件管理器长按选“解压到”,注意路径和后缀;iOS须借iZip或WinZip通过“文件”App中转;分卷、冷门格式或卡死时,分别用ZArchiver、解压专家或重启处理。 手机文件管理器解压文件是日常办公和资料接收中最基础也最频繁的操作,尤其在收到老师发的课件包、同事传的项目素材或网购附赠的说明书压缩包时,必须快速还原出原始文件才能继续使用。操作本身不依赖网络、...

米侠浏览器如何通过内置文件管理器找回下载的文件?

米侠浏览器下载文件后可通过长按下载条目选择“打开所在文件夹”直接定位,若失效则复制设置中下载路径手动访问,或用文件管理器按扩展名+时间搜索临时文件。 您在米侠浏览器中完成下载后,发现文件没出现在相册、Download文件夹或常规路径里,但下载记录仍显示“已完成”,这时无需退出浏览器或打开第三方应用,直接利用其内置的文件管理跳转能力就能精准定位物理文件。 通过下载记录一键跳转到文件所在文件夹 这一步...

thunder network文件夹在哪个位置

要准确找到Thunder Network文件夹,需先确认迅雷版本并查看“关于”中的安装路径;再依次检查①C:\Thunder Network\、②C:\Program Files(x86)\Thunder Network\、③%APPDATA%\Thunder Network\、④C:\Users\Public\Thunder Network\;或用资源管理器全局搜索、进程右键“打开文件所在位置”...

wallpaper文件保存位置在哪

wallpaper 是一款广受用户喜爱的桌面美化工具,不少人在使用时都会关注其壁纸资源的存储位置。 壁纸文件的实际存放路径通常会根据所使用的操作系统而有所不同。 在 Windows 平台上,若你通过官网渠道获取并安装了 Wallpaper 应用,系统一般会将壁纸资源统一存放在与程序关联的默认目录中。常见的路径示例为:C:\Program Files\Wallpaper\Wallpapers。该文件...