使用pkg_resources时,在通用换行模式下打开文件?

AP2*_*257 3 python csv pkg-resources

我正在处理CSV文件并具有以下工作代码:

reader = csv.reader(open(filename, 'rU'), dialect='excel')
header = reader.next()
Run Code Online (Sandbox Code Playgroud)

但是,为了与代码库中的其他地方兼容,我需要使用一个文件对象pkg_resources.resource_stream,如下所示:

fileobj = pkg_resources.resource_stream('foo', 'tests/bar.csv')
reader = csv.reader(fileobj, dialect='excel')
header = reader.next()
Run Code Online (Sandbox Code Playgroud)

(我在这里进行了简化 - 基本上csv.reader代码是在我无法控制的函数中,并且它需要一个fileobj.)

这会引发以下错误.

Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
Run Code Online (Sandbox Code Playgroud)

知道我如何使用通用换行模式fileobj吗?我在pkg_resources文档中看不到任何相关内容.

谢谢.

adw*_*adw 6

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