2017-09-09 5 views
1

私はこの例が残っています。私はなぜときにprint(contenuto)の結果は[]ですが、私はすべての "最初の部分"を削除し、それが動作し、結果は['prova1', 'prova2', 'prova3']になると理解していません。リスト、ファイル、およびreadlines

def main(): 
    ####FIRST PART#### 

    lista = ['prova1', 'prova2', 'prova3'] 
    outfile = open('prova.txt', 'w') 
    nuovo = input("inserisci: ") 
    lista.append(nuovo) 
    for a in lista: 
     outfile.write(a + '\n') 
    outfile.close 

    ######SECOND PART#### 

    file = open('prova.txt', 'r') 
    contenuto = file.readlines() 
    file.close 
    x = 0 
    for a in contenuto: 
     contenuto[x] = contenuto[x].rstrip('\n') 
     x += 1 
    print(contenuto) 

main() 
+2

この質問はもはや再現できる問題や単純なタイプミスによって引き起こされました。同様の質問がここでは話題になるかもしれないが、これは将来の読者を助けるとは思わない方法で解決された。 –

+0

'file.close'を' file.close() 'に変更します。あなたが持っているのは、関数を呼び出すのではなく、関数を参照することです。 –

答えて

2

.close()ない.close: は、ここでは、コードです。 close関数を呼び出さないので、ファイルはまだディスクにフラッシュされません。

ので、ファイルが自動的にクローズされwithを使用することをお勧めし:

def main(): 
    ####FIRST PART#### 

    lista = ['prova1', 'prova2', 'prova3'] 
    with open('prova.txt', 'w') as outfile: 
     nuovo = input("inserisci: ") 
     lista.append(nuovo) 
     for a in lista: 
      outfile.write(a + '\n') 

    ######SECOND PART#### 

    with open('prova.txt', 'r') as file: 
     contenuto = file.readlines() 
    x = 0 
    for a in contenuto: 
     contenuto[x] = contenuto[x].rstrip('\n') 
     x += 1 
    print(contenuto) 

main() 
+0

OMGありがとう、私は私の目の前にそれを持っていたし、私は何日も見なかった。 – Max

関連する問題