Skip to main content
 首页 » 编程设计

python之读取包内的csv文件

2025年05月04日14kuangbin

如果这个问题很愚蠢,我很抱歉,但我是个 Python 新手。

我正在尝试将 python 2.7 代码库移植到 python 3.4...
我发现这段代码片段应该遍历打包应用程序中的 csv 文件。
尽管 PyDev 告诉我,pkg_resources.respource_stream 未定义第一行似乎有效,导致第三行抛出此错误:_csv.Error: iterator should return strings, not bytes (did you open the file in text模式?)

io = pkg_resources.resource_stream(__name__, "data.csv") 
c = csv.reader(io) 
for record in c: 
    #doStuff 

我尝试将方法切换为 resource_string、ResourceManager.resourceStream 等,但我得到的只是不同的错误。

请您参考如下方法:

pkg_resources.resource_stream 返回一个以二进制模式读取的流;它只返回读取的字节,并不尝试使用特定编码对其进行解码。

大多数用于编码和解码文本的工具都可以在 codecs module 中找到.要将二进制阅读器转换为给定特定编码的文本阅读器,请使用 codecs.getreader .由于您是自己捆绑此文件,因此您应该知道编码,它可能应该是 UTF-8。所以你会写:

io = pkg_resources.resource_stream(__name__, "data.csv") 
utf8_reader = codecs.getreader("utf-8") 
c = csv.reader(utf8_reader(io)) 
for record in c: 
    # doStuff