3

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

reader = csv.reader(open(filename, 'rU'), dialect='excel')
header = reader.next()

但是,为了与代码库中的其他地方兼容,我需要使用文件对象 using 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内容。

谢谢。

4

1 回答 1

6

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

于 2010-10-29T16:38:16.333 回答