2016-08-12 3 views
-1

내 프로그램은 터미널에서 목록에 항목을 추가 할 수 있도록 설정되어 있지만, 예를 들어 myFile.append('hello')과 같이 할 때마다 터미널을 종료하고 할 때 다시 'hello'이 삭제됩니다. 도와주세요. 고맙습니다! 당신은 .append 아니지만 파일 목록에 추가 할 수 있습니다파이썬으로 목록에 항목을 추가하고 저장하는 방법

with open(myFile, 'a') as f: 
    f.write('hello') 

:

코드

elif userInput in command: 
    print("Okay, Initializing new command.\n\n") 
    command1 = raw_input("Which command would you like to add?\nKeyword\nLater Versions\n ").lower() 
    if command1 == 'keyword': 
     print('You selected keyword, to exit press enter') 
     command2 = raw_input("Which Keyword would you like to edit? ") 
     if command2 == 'calc': 
      command3 = raw_input("Which Keyword would you like to add? ") 
      calc.append(command3) 
      print(calc) 
+5

질문에 코드를 포함하십시오. 이렇게하면 우리가 훨씬 쉽게 도와 줄 수 있습니다. – elethan

+2

모든 프로그래밍 언어 변수 (또는 목록 또는 사전 등)는 모두 프로그램의 메모리에만 존재하며 프로그램이 종료되면 정리됩니다. 무언가를 저장하려면 데이터베이스 나 파일 또는 다른 외부 저장 방법에 저장해야합니다. – Cfreak

+0

@Cfreak. 현재 디렉토리에 저장된 시작 파일 역시 작동 할 수 있습니다 ... –

답변

3

같은 것을보십시오. 대신 위의 'a'플래그를 사용하여 myFile 파일에 추가 할 수 있습니다. myFile은 파일 경로입니다.

업데이트 :

기존의 코드와 당신이 달성하고자하는 기반으로하는이 시도 : 기본적으로

... 


elif userInput in command: 
    print("Okay, Initializing new command.\n\n") 
    command1 = raw_input("Which command would you like to add?\nKeyword\nLater Versions\n ").lower() 
    if command1 == 'keyword': 
     print('You selected keyword, to exit press enter') 
     command2 = raw_input("Which Keyword would you like to edit? ") 
     if command2 == 'calc': 
      command3 = raw_input("Which Keyword would you like to add? ") 
      calc = 'path/to/file' 
      with open(calc, 'a+') as f: 
       f.write(command3 + '\n') 
       f.seek(0) #This brings you back to the start of the file, because appending will bring it to the end 
       print(f.readlines()) 

을, 당신은 파일을 작성하고, 모든 단어의 목록을 다시 인쇄 해당 파일에 기록됩니다. 'a+' 플래그를 사용하면 읽기 및 쓰기 용 파일을 열 수 있습니다. 또한 "목록"을 print(f.readlines())으로 인쇄하는 대신/변수에 할당하고 list 객체를 나중에 조작 할 수 있습니다 (wordlist = f.readlines()).

또한 문제의 근본적인 이해를 향상 시키려면 thisthis을 확인해야합니다.

업데이트 2

추가 할 수 이전 코드에서 키워드의 파이썬 list을해야하는 경우 :

with open('wordlist.txt', 'a+') as f: #wordlist.txt can be changed to be another file name or a path to a file 
    f.seek(0) #opening with `'a+'` because it will create the file if it does not exist, 
       # and seeking because `'a+'` moves to the end of the file 
    calc = f.readlines() 

wordlist.txt에서 단어의 목록을 읽어와 파이썬에 저장됩니다 listcalc입니다. calc은 실제 파이썬 list 개체이므로 calc.append('whatever')을 사용할 수 있습니다. 나중에 다시 영구 "목록"(실제로는 줄 바꿈 ('\n'로 구분 된 단어 단지 텍스트 파일 인)에 대한 모든 키워드를 저장하려면 코드에서, 당신은 할 수 있습니다 :

with open('wordlist.txt', 'w+') as f: 
    for word in calc: 
     f.write(word) 
    f.seek(0) 
    print(f.readlines()) 

이 뜻을 단어 목록 파일을 현재 calc 목록에있는 모든 단어로 덮어 쓰고 콘솔에 모든 값을 인쇄하십시오.

이것은 프로그램이 어떻게 작동하는지 직접 작성하지 않고 할 수있는 것처럼 좋습니다. . 파이썬 파일 I/O에 대한 이해를 향상 시키십시오. 일부 연습에서는 그렇게 복잡하지 않으며 향후 지속적으로 간단한 데이터를 얻을 수있게 될 것입니다. 또한 sugges 파이썬이 어떻게 작동하는지 전반적으로 이해하기 위해 Codecademy의 this one과 같은 파이썬 튜토리얼을 살펴 보겠습니다. 나는 모욕으로 그런 뜻이 아닙니다. 필자는 얼마 전이 튜토리얼을 직접 작성했기 때문에 파이썬 기초의 좋은 기초를 만드는 데 정말로 도움이되었습니다. a lesson on file I/O도 포함됩니다. 행운을 빕니다!

+0

그리고 그것을 다시 읽으십니까? –

+2

또한 OP의 질문에 따르면이 대답이 유용하기 전에 더 많은 정보를 제공해야 할 것입니다. –

+0

나는 "잘못된"것이 아니기 때문에 이것을 downvote하지 않을 것이다. 그러나 OP에 도움이되는 모든 것이 확실하지는 않다. OP는 스토리지와 메모리의 차이점을 이해하기 위해 매우 기본적인 튜토리얼을 필요로합니다. – Cfreak

관련 문제