如何在Google Colab中使用Python解码获取的编码文件
问题根因
你当前拿不到目标文本内容,和特殊编码解码没有直接关系,存在两个核心错误:
- 请求的URL是Google Drive的文件预览网页地址,不是文件直链,接口返回的是Drive预览页的HTML源码,根本不是
indian_histpry.txt的文件内容,你打印出的内容里的<title>indian_histpry.txt - Google Drive</title>就是网页的标题标记,足以证明返回的是网页而非文件。 urllib的response.read()默认返回bytes字节类型,直接打印会带b'...'前缀,就算拿到正确的文件内容,也需要指定编码转成普通字符串才能正常显示。
解决步骤
方案1:直接请求公开分享文件的直链(无需挂载Drive)
Google Drive公开分享的文件有固定的直链格式,不需要走预览页,替换文件ID后直接请求即可,拿到字节内容后用UTF-8解码为字符串:
import urllib.request # 从原分享链接里提取的文件ID file_id = "1L4zhc1Vdpdy78t8CgZgA165siRtNaEsQ" # 拼接公开文件直链 download_url = f"https://drive.google.com/uc?export=download&id={file_id}" with urllib.request.urlopen(download_url) as resp: # 读取字节后解码为普通文本 txt_content = resp.read().decode("utf-8") print(txt_content)
- 如果解码后出现乱码,可以把
decode("utf-8")替换成decode("gbk")或者decode("latin-1")尝试匹配文件的实际编码。 - 该方案仅适用于公开分享、体积较小的文件,大文件会触发Drive的下载安全校验,请求会失败。
方案2:Colab环境挂载Google Drive读取(最稳定)
如果文件存在你自己的Google Drive里,直接把Drive挂载到Colab运行环境,按本地文件路径读取即可,不存在链接失效、鉴权失败的问题:
from google.colab import drive # 执行后会弹出授权链接,按提示完成授权即可 drive.mount('/content/drive') # 替换成你Drive里indian_histpry.txt的实际存放路径 file_path = "/content/drive/MyDrive/indian_histpry.txt" with open(file_path, "r", encoding="utf-8") as f: txt_content = f.read() print(txt_content)
注意:不要尝试对之前拿到的预览页HTML做解码,那部分内容是网页前端代码,不包含你要的txt文件的实体内容,怎么解码都拿不到目标文本。
内容的提问来源于stack exchange,提问作者Dilip Kukadiya
相关产品推荐
相关产品推荐

