web-dev-qa-db-ja.com

Python IOError:ファイルが読み取り用に開かれていません

Pythonでファイルを開こうとするとエラーが発生します。ここに私のコードがあります:

>>> import os.path
>>> os.path.isfile('/path/to/file/t1.txt')
>>> True
>>> myfile = open('/path/to/file/t1.txt','w')
>>> myfile
>>> <open file '/path/to/file/t1.txt', mode 'w' at 0xb77a7338>
>>> myfile.readlines()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: File not open for reading

私も試しました:

for line in myfile:
    print(line)

そして、私は同じエラーを受け取りました。このエラーが発生する理由を誰か知っていますか?

21
Alireza41

モードを_'w'_として指定して、書き込み用にファイルを開きました。代わりに、読み取り用にファイルを開きます。

_open(path, 'r')
_

_'r'_がデフォルトであるため、省略できます。読み取りと書き込みの両方が必要な場合は、_+_モードを使用します。

_open(path, 'w+')
_

_w+_は書き込み用にファイルを開き(0バイトに切り捨てます)、読み取りも可能にします。 _r+_を使用すると、読み取りと書き込みの両方で開かれますが、切り捨てられません。

_r+_や_w+_などのデュアルモードを使用する場合は、両方を使用して .seek() method にも慣れる必要があります。読み取りおよび書き込み操作はファイル内の現在の位置を移動します。そのような操作間で現在のファイルの位置を明示的に移動することをお勧めします。

詳細については、 open()関数のドキュメント を参照してください。

43
Martijn Pieters

考えてみれば、単純な間違いです。あなたのコードでは次のことをしています:

myfile = open('/path/to/file/t1.txt','w')

書き込み用であることを指定します。あなたがする必要があるのは、これを読み取り用のrに設定することです

myfile = open('/path/to/file/t1.txt','r')
1
Matt Seymour