如何使用Python读取并处理1995年的.WPF格式旧文档?
解决Python读取1995年.WPF旧文本文件的问题
我之前处理过不少这种扩展名混乱的旧文件,给你几个针对性的解决方案:
先搞清楚文件的真实格式
1995年的文件大概率是扩展名标错了,不是现代的WPF(Windows Presentation Foundation)格式,也不是误判的.doc(毕竟textract已经排除了这种可能)。先通过文件签名确认真实类型:
用Python检测格式
安装python-magic库后运行以下代码:
import magic file_path = "你的文件.WPF" mime_type = magic.from_file(file_path, mime=True) print(f"文件真实MIME类型: {mime_type}")
用系统命令行检测(更快捷)
如果是Linux/macOS,直接在终端执行:
file 你的文件.WPF
Windows用户可以安装file命令工具,或者通过PowerShell结合文件签名数据库判断,前者操作更简单。
根据真实格式选择处理方法
情况1:本质是纯文本文件
如果检测结果是text/plain,那就是扩展名标错了,直接尝试不同编码读取(1995年的文件常用Latin-1、CP1252这类编码):
# 按可能性从高到低尝试编码 encodings = ['cp1252', 'latin-1', 'iso-8859-1', 'utf-8'] for enc in encodings: try: with open("你的文件.WPF", 'r', encoding=enc) as f: content = f.read() print(f"✅ 用{enc}编码读取成功!") print("预览内容:\n", content[:500]) # 打印前500字符验证 break except UnicodeDecodeError: print(f"❌ {enc}编码读取失败,尝试下一个...")
情况2:是旧版WordPerfect文档
1995年WordPerfect非常流行,有些变种会使用非标准扩展名。如果检测到是WordPerfect格式,可以用pywpd库处理:
from wpd import WPDFile with open("你的文件.WPF", 'rb') as f: wpd_doc = WPDFile(f) text_content = wpd_doc.text print(text_content)
如果pywpd安装失败(毕竟是比较旧的库),可以用LibreOffice命令行将其转换为纯文本:
libreoffice --headless --convert-to txt:Text 你的文件.WPF
转换后会生成同名的.txt文件,直接用Python读取即可。
情况3:是RTF格式
如果检测到是RTF格式,用rtf2text库提取文本:
from rtf2text import rtf2text with open("你的文件.WPF", 'r') as f: rtf_content = f.read() plain_text = rtf2text(rtf_content) print(plain_text)
关于textract报错的说明
textract对罕见旧格式、扩展名错误的文件支持很差,它的判断逻辑比较固化,所以直接用它处理这类文件容易踩坑。先确定真实格式再针对性处理才是靠谱的思路。
内容的提问来源于stack exchange,提问作者snapper




