2017-09-09 1 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