You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从URL读取.odt文件?报错问题求助

解决从URL读取.odt文件的语法错误问题

嘿,这个问题我熟!你碰到的是Python版本兼容的坑——你用的ODTReader库是基于Python 2开发的,但你现在运行的是Python 3,两者的print语法不一样,才导致了这个报错。

错误原因详解

Python 2里的print是一个语句,写法是print "xxx";但Python 3里print变成了函数,必须加括号写成print("xxx")。你看到的报错行print "Could not find 'content.xml': {}".format(str(e))就是典型的Python 2写法,放在Python 3环境里自然会触发语法错误。

两种解决方案

方案一:手动修复ODTReader库的代码

如果你不想换库,可以直接修改库里的代码来适配Python 3:

  • 找到报错文件的路径:C:\ProgramData\Anaconda3\lib\site-packages\ODTReader\odtreader.py
  • 打开这个文件,把所有不带括号的print语句都改成带括号的形式。比如报错的那行要改成:
    print("Could not find 'content.xml': {}".format(str(e)))
    
  • 检查文件里其他的print语句,只要是类似print "一些文本"的写法,都改成print("一些文本")的形式。

方案二:换用Python 3兼容的ODT读取库(推荐)

更稳妥的方式是换用专门支持Python 3的ODF文档处理库,比如odfpy。步骤如下:

  1. 先安装库:
    pip install odfpy
    
  2. 使用以下代码读取URL中的.odt文件:
    import requests
    from io import BytesIO
    from odf import text, teletype
    from odf.opendocument import load
    
    url = "https://abc.s3.ap-south-1.amazonaws.com/sample1.odt"
    # 从URL获取文件内容并加载为ODT文档
    response = requests.get(url)
    doc = load(BytesIO(response.content))
    
    # 提取文档中的所有文本
    odt_text = ""
    for paragraph in doc.getElementsByType(text.P):
        odt_text += teletype.extractText(paragraph) + "\n"
    
    print("odt_text ", odt_text)
    

这个库维护更活跃,也完全兼容Python 3,能稳定处理ODT文件的文本提取。

内容的提问来源于stack exchange,提问作者user14956888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 04:47:38