用Python打开不同联类型的文件
在 Python 中,你可以使用不同的模块来打开和处理各种类型的文件(如文本文件、CSV、Excel、JSON、PDF、数据库等)。以下是一些常见文件类型的处理方法,以及如何将它们读取到 pandas.DataFrame
中:
一、文本文件(.txt)
1. 打开并读取内容
with open("example.txt", "r", encoding="utf-8") as file:content = file.read()print(content)
2. 写入内容
with open("example.txt", "w", encoding="utf-8") as file:file.write("Hello, world!")
二、CSV 文件(.csv)
1. 使用 pandas
读取(推荐)
import pandas as pd
df = pd.read_csv("example.csv")
print(df.head())
2. 手动读取(适用于简单解析)
import csv
with open("example.csv", newline="", encoding="utf-8") as csvfile:reader = csv.reader(csvfile)for row in reader:print(row)
✅ 注意:Excel 文件读取需要 openpyxl
或 xlrd
作为引擎。
四、JSON 文件(.json)
1. 读取 JSON 文件到 Python 字典
import json
with open("example.json", "r", encoding="utf-8") as f:data = json.load(f)print(data)
2. 将 JSON 数据读入 DataFrame(适用于结构化数据)
import pandas as pd
with open("example.json", "r", encoding="utf-8") as f:data = json.load(f)
df = pd.DataFrame(data)
print(df.head())
五、数据库文件(如 SQLite)
使用 sqlite3
读取 SQLite 数据库
import sqlite3
import pandas as pdconn = sqlite3.connect("example.db")
query = "SELECT * FROM table_name"
df = pd.read_sql(query, conn)
print(df.head())
六、PDF 文件(.pdf)
使用 PyPDF2
读取 PDF 内容
pip install PyPDF2
import PyPDF2
with open("example.pdf", "rb") as file:reader = PyPDF2.PdfReader(file)for page in reader.pages:print(page.extract_text())
✅ 注意:PDF 内容提取可能受格式限制,复杂排版可能需要其他工具如 pdfplumber
或 PyMuPDF
。
七、Word 文档(.docx)
使用 python-docx
读取 Word 文件
pip install python-docx
from docx import Document
doc = Document("example.docx")
for para in doc.paragraphs:print(para.text)
八、图像文件(.jpg / .png)
使用 Pillow
读取图像
pip install pillow
from PIL import Image
img = Image.open("example.jpg")
img.show()
九、XML 文件(.xml)
使用 xml.etree.ElementTree
解析 XML
import xml.etree.ElementTree as ET
tree = ET.parse("example.xml")
root = tree.getroot()
for child in root:print(child.tag, child.attrib)
十、从网络 API 获取数据(JSON 格式)
使用 requests
获取 JSON 数据
pip install requests
import requests
import pandas as pdresponse = requests.get("https://api.example.com/data")
data = response.json()
df = pd.DataFrame(data)
print(df.head())
🧩 小贴士:将文件数据转换为 DataFrame
文件类型 | 转换方法 |
---|---|
CSV | pd.read_csv() |
Excel | pd.read_excel() |
JSON | pd.DataFrame(data) |
SQL | pd.read_sql() |
API | pd.DataFrame(response.json()) |
📌 总结
文件类型 | 推荐模块 | 是否支持 DataFrame |
---|---|---|
.txt | 内置 open() | ❌ |
.csv | pandas / csv | ✅ |
.xlsx | pandas + openpyxl | ✅ |
.json | json / pandas | ✅ |
.db | sqlite3 / pandas | ✅ |
.pdf | PyPDF2 / pdfplumber | ❌ |
.docx | python-docx | ❌ |
.jpg | Pillow | ❌ |
.xml | xml.etree.ElementTree | ❌ |
API | requests + pandas | ✅ |