1

私はPythonを初めて使用し、プログラミングの経験があまりありません。特定のディレクトリから CSV ファイルを開こうとすると、エラーが発生します。

import csv
ifile = open('F:\Study\CEN\Mini Project\Data Sets\test.csv', "rb");

エラー:

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    ifile = open('F:\Study\CEN\Mini Project\Data Sets\test.csv', "rb");
IOError: [Errno 22] invalid mode ('rb') or filename: 'F:\\Study\\CEN\\Mini Project\\Data Sets\test.csv'

何をすべきか ????

4

3 に答える 3

3

スラッシュを使用します。

ifile = open('F:/Study/CEN/Mini Project/Data Sets/test.csv', "rb");

または、少なくともバックスラッシュをエスケープします。

ifile = open('F:\\Study\\CEN\\Mini Project\\Data Sets\\test.csv', "rb");

別のオプション: os.path.join を使用します。

out = os.path.abspath(os.path.join('path', 'test.csv'))
于 2013-10-16T13:23:17.383 に答える
2

あなたの問題はここにあります:

'F:\Study\CEN\Mini Project\Data Sets\test.csv'
                                    ^^

生の文字列を使用しなかったため、Python は\tタブ文字を意味すると考えています。

ちなみに、エラーメッセージでそれを見ることができます: Python がすべてのバックスラッシュを二重のバックスラッシュに変換した方法に注意してください (これは、リテラルのバックスラッシュを通常の文字列で表現する必要がある方法です)。手紙」は、実際には何か特別な意味を持っていたのでしょうか?

使用する

ifile = open(r'F:\Study\CEN\Mini Project\Data Sets\test.csv', "rb")

(セミコロンを削除します。Pythonでは必要ありません)、動作するはずです。

于 2013-10-16T13:19:14.750 に答える
0

あなたの問題は、「\ t」と os.path パッケージのさまざまなツールへの露出の欠如にあります

この問題に対処するための正しくて最も簡単な方法は、os.path.normpath を文字列リテラル r と組み合わせて使用​​することです。これにより、バックスラッシュがエスケープ文字として解釈されなくなります。

(Python での字句解析に関するドキュメントは、こちらにあります: https://docs.python.org/2/reference/lexical_analysis.html )

コマンド ラインで「python」と入力して対話型 python を開き、次の手順を実行して、非常にシンプルであることを確認します。

>>> import os
>>> path = r'F:\Study\CEN\Mini Project\Data Sets\test.csv'
>>> os.path.normpath(path)
'F:\\Study\\CEN\\Mini Project\\Data Sets\\test.csv'

dos と unix (OS X など) の両方で実行する必要があるスクリプトにハードコードされたパスを使用する場合は、normpath を使用する必要があります。特定の環境に適した種類のスラッシュが使用されるようにします

余談ですが、CSV ファイルで作業している場合は、csv モジュールの代わりに petl ライブラリを使用する必要があります。多くの時間と手間を省くことができます。でインストールしますpip install petl

于 2014-10-28T14:56:42.507 に答える