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

ありがとう。

4

1 に答える 1

6

ストリームに常に fd がある場合 (たとえば、ファイルシステム上で通常開いているファイルであるため)、 を使用os.fdopen(fileobj.fileno(), 'rU')して適切なモードで開くことができます。

于 2010-10-29T16:38:16.333 に答える