2017-11-18 15 views
0

私は関数write_corpus_to_fileを呼び出そうとしていますが、プログラムを実行するとエラーコード'属性エラー:リストに属性 'txt'がありません。私はPythonの初心者です、誰も助けることができますか?Pythonエラーコード: 'リストには属性' txt 'がありません

FUNCTION:MAIN LOOP OF

def write_corpus_to_file(mycorpus, myfile): 
    f = open(myfile, 'w') 
    newcorpus = ''.join(mycorpus) 
    f.write(newcorpus) 
    f.close()     

SECTION:

elif user_input=="a": 
    addseq = input("Enter new input to corpus ") 
    tidy_text(addseq) 
    extcorpus = corpus.extend(addseq) 
    write_corpus_to_file(extcorpus, corpus.txt) 
+1

。だから 'corpus.txt'は本当に' 'corpus.txt" ' – sjaustirni

答えて

2

あなたが引用符でファイル名を入れるのを忘れ:

write_corpus_to_file(extcorpus, "corpus.txt") 

あなたが引用符を持っていない場合、Pythonはそのままcorpus.txtをとり、txtの属性にアクセスしようとします。変数はcorpusとなります。それはもちろん存在しないので、エラーです。

また、お勧めです。この代わりに:

f = open(myfile, 'w') 
f.write(newcorpus) 
f.close() 

これを行います。

with open(myfile, 'w') as f: 
    f.write(newcorpus) 

このメソッドは、ファイルへの書き込みをしても、エラーが発生した場合には適切に閉じられているリソースが正しく解放されることを保証し、そして。

EDITextend、リスト上で動作する他の機能などは、インプレースに動作します。これは、リストを変更し、新しいリストを返さないことを意味します。したがって、extcorpus = corpus.extend(addseq)を実行すると、extendは何も返しませんので、extcorpusに値は与えられません。

ので、同じようにコードを変更し

:myfile`が文字列ではなく、変数名でなければなりません `

elif user_input=="a": 
    addseq = input("Enter new input to corpus ") 
    tidy_text(addseq) 
    corpus.extend(addseq) 
    write_corpus_to_file(corpus, "corpus.txt") 
+0

ありがとう!しかし私はこれを行うと、別のエラーコードが出てきます:TypeError:イテラブルにしか参加できません –

+0

@ I.E.Ke編集を確認してください。 – stybl

関連する問題