我正在处理一个 CSV 文件并具有以下工作代码:
reader = csv.reader(open(filename, 'rU'), dialect='excel')
header = reader.next()
但是,为了与代码库中的其他地方兼容,我需要使用
pkg_resources.resource_stream
使用文件对象,如下所示:fileobj = pkg_resources.resource_stream('foo', 'tests/bar.csv')
reader = csv.reader(fileobj, dialect='excel')
header = reader.next()
(我在这里进行了简化 - 基本上
csv.reader
代码在一个我无法控制的函数中,它需要一个 fileobj
。)这会引发以下错误。
Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
知道如何在我的
fileobj
中使用通用换行模式吗?我在 pkg_resources
文档中看不到任何关于此的内容。谢谢。
最佳答案
如果流始终具有 fd(例如,因为它是文件系统上正常打开的文件),则可以使用 os.fdopen(fileobj.fileno(), 'rU')
以正确的模式打开它。
关于python - 使用 pkg_resources 时以通用换行模式打开文件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4052489/