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 文件。每种方法都有其优缺点,选择哪种方法取决于具体的需求和使用场景。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。