2017-01-24 77 views
1

我剛剛開始爲hangman遊戲編寫python代碼,並將文字存儲在文件中。我也給出了一個選項,可以根據用戶的意願添加單詞。我已經編寫了相同的代碼,但由於某種原因,在程序重新啓動之前該文件不會更新。請告訴我,哪裏出錯也是我碰巧遇到的開始編程的蟒蛇很長一段時間後,請記住,它可能是一個失誤而導致因生鏽或內存faults.Here的我的代碼(僅適用於有關文件輸入輸出問題):python寫入python文件不會立即發生(hangman遊戲)

import os 
def start(): 
    wordlist = open("wordlist_hangman",'a+') 
    words= wordlist.read() 
    choice=menu() 
    if choice=='1': 
     os.system('cls' if os.name == 'nt' else 'clear') 
     game_start(wordlist,words) 


    elif choice=='2': 
     os.system('cls' if os.name == 'nt' else 'clear') 
     add_word(wordlist) 

    elif choice=='3': 
     os.system('cls' if os.name == 'nt' else 'clear') 
     print words 
     start() 
    else: 
     os.system('cls' if os.name == 'nt' else 'clear') 
     print('Invlaid input:must enter only 1,2 or 3 ') 
     start() 
def menu(): 
    print('Enter the number for the desired action.At any point in time use menu to go back to menu.') 
    print('1.Start a new game.') 
    print('2.Add words in dictionary.') 
    print('3.See words present in dictionary') 
    menu_choice=raw_input('>') 
    return menu_choice 
def add_word(wordlist): 
    print("Enter the word you wish to add in ypur game") 
    wordlist.write("\n"+raw_input('>')) 
    start() 
start()  
+2

您必須使用'wordlist.close()'來刷新文件。 –

+0

會closinbg並重新打開文件做這項工作? – 7h3wh173r48817

+1

但是最好使用'with'代替。刪除縮進並關閉文件 –

回答

3

Python的文件對象緩衝寫入操作,直到達到緩衝區大小。爲了真正把緩衝區裏的文件,調用flush()如果你想,如果你已經完成了,繼續寫作或close():或者

wordlist.write("foo") 
wordlist.flush() # "foo" will be visible in file 
wordlist.close() # flushed, but no further writing possible 

,你可以open the file unbuffered。這樣,所有的寫入將立即提交:

wordlist = open('file.txt', buffering=0)