5

ファイルを開き、単語を数え、単語数を返し、閉じるクラスのプログラムを書いています。ファイルを開いてテキストを表示する以外のすべての方法を理解しています これは私がこれまでに持っているものです:

    fname = open("C:\Python32\getty.txt") 
    file = open(fname, 'r')
    data = file.read()
    print(data)

私が得ているエラーは次のとおりです。

    TypeError: invalid file: <_io.TextIOWrapper name='C:\\Python32\\getty.txt' mode='r'
    encoding='cp1252'>

ファイルは正しい場所に保存され、スペルなどをチェックしました。pycharm を使用してこれに取り組んでおり、開こうとしているファイルはメモ帳にあります。

4

4 に答える 4

15

2回使用open()しているため、実際にはすでにファイルを開いているため、すでに開いているファイルオブジェクトを開こうとしています...コードを次のように変更します。

fname = "C:\\Python32\\getty.txt"
infile = open(fname, 'r')
data = infile.read()
print(data)

ファイルを開くときに返されるタイプをTypeError開くことができないと言っています。_io.TextIOWrapperopen()


編集:実際には次のようにファイルを処理する必要があります:

with open(r"C:\Python32\getty.txt", 'r') as infile:
    data = infile.read()
    print(data)

withステートメントブロックが終了すると、ファイルを閉じる処理が行われるため、非常に便利です。文字列のr前にあると、Python が文字列を解釈するのを防ぎ、作成したとおりのままになります。

于 2012-10-27T08:22:21.847 に答える
0

問題は一行目。オープンのない単純な割り当てにする必要があります。つまり、 fname = "c:\Python32\getty.txt。また、バックスラッシュをエスケープする (例: '\') か、文字列リテラルに 'r' を入れる方がよいでしょう (これは、特定のプログラムでは、ファイル名に特殊文字が含まれていると購入が問題になる可能性があります。全体的なプログラムは次のようになります。

fname = r"c:\Python32\getty.txt"
file = open(fname,'r')
data = file.read()
print (data)
于 2012-10-27T08:30:07.373 に答える
-1

ファイルのディレクトリを書き込んでいるときにバックスラッシュを使用しているため、このようなエラーが発生していますが\、これは良くありません。スラッシュを使用する必要があります/。例えば

file_ = open("C:/Python32/getty.txt", "r")
read = file_.read()
file_.close()
print read

これからは、すべてのファイル コードをread.

ファイル モード ('r'、'U'、'w'、'a'、場合によっては 'b' または '+' が追加されます)

編集:

スラッシュを変更したくない場合はr、文字列の前に単に追加します。r"path"

fname = r"C:\Python32\getty.txt"
file_ = open(fname, 'r')
data = file_.read()
print data
于 2012-10-27T14:03:58.773 に答える