You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用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-1CP1252这类编码):

# 按可能性从高到低尝试编码
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

火山引擎 最新活动