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

使用urllib读取AWS S3的txt文件时list()返回整数列表如何获取每行数据

问题原因

urllib.request.urlopen返回的响应对象调用read()方法得到的是bytes类型的字节流,直接迭代/转为列表会返回每个字节对应的十进制ASCII编码值,就是你看到的整数列表,和本地文件以文本模式("r")打开时默认返回字符串行的逻辑完全不同。

解决方案(无需额外依赖,直接修改现有代码即可)

你只需要先把字节流解码为UTF-8文本,再按换行符拆分即可得到每行数据组成的列表,效果和你读本地文件的代码完全一致:

import urllib.request

with urllib.request.urlopen("https://foldername.s3.amazonaws.com/mockfile.txt") as resp:
    # 1. 字节流解码为utf-8文本 2. 按换行拆分自动去除行尾换行符
    datalist = resp.read().decode("utf-8").splitlines()

    # 直接遍历即可,不需要额外处理换行
    for line in datalist:
        print(line)

splitlines()方法会自动识别\n、\r\n等多种换行格式,比手动调用strip('\n')兼容性更好。

可选方案(常用S3操作推荐)

如果经常操作AWS S3资源,可以用官方的boto3库,代码更规范也支持更多权限控制场景:

import boto3

s3 = boto3.client('s3')
resp = s3.get_object(Bucket='foldername', Key='mockfile.txt')
datalist = resp['Body'].read().decode('utf-8').splitlines()

使用boto3需要提前配置AWS认证信息,适合生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:15:03