当使用pkg_resources时,如何以universal-newline模式打开文件?

3

我正在处理一个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文档中没有看到任何相关信息。
谢谢。
1个回答

6

如果流始终具有fd(例如,因为它是文件系统上正常打开的文件),则可以使用os.fdopen(fileobj.fileno(),'rU')以正确的模式打开它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接