如何使用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。步骤如下:
- 先安装库:
pip install odfpy - 使用以下代码读取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
相关产品推荐
相关产品推荐

