2016-07-15 77 views
0

作爲初學者創建一個簡單的python文本編輯器,我遇到了一個令人困惑的錯誤,當我第一次打開它時,能夠用read_file()函數打印文本文件,但在使用write_file()修改文本文件後,再次讀取文件會返回空白。簡單文本編輯器(Python)中的錯誤

此外,任何批評我的代碼將不勝感激。謝謝。

import os 


def main(): 
    file = open_file() 
    quit = False 
    while quit == False: 
     print('Current file open is {}'.format(file.name)) 
     print('(\'read\', \'write\', \'rename\', \'change file\', \'quit\',)') 
     action = raw_input('> ') 
     if str(action) == 'read': 
      read_file(file) 
     elif str(action) == 'write': 
      file = write_file(file) 
     elif str(action) == 'rename': 
      file = rename(file) 
     elif str(action) == 'change file': 
      file.close() 
      open_file() 
     elif str(action) == 'quit': 
      break 
     else: 
      print('Incorrect action.') 



def open_file(): 
    print('Create/open a file') 
    filename = raw_input('Filename: ') 
    try: 
     file = open(str(filename), 'r+') 
     return file 
    except: 
     print('An error occured') 
     return open_file() 



def read_file(file): 
    try: 
     print('{}, {}'.format(file.name, file)) 
     print(file.read()) 
    except: 
     print('An error occured') 
    return None 


def write_file(file): 
    print('Type to start writing to your file.') 
    #read_file(file) 
    add_text = raw_input('> ') 
    file.write(str(add_text)) 
    return file 


def rename(file): 
    new_name = raw_input('New file name: ') 
    os.rename(file.name, str(new_name)) 
    return file 


main() 

回答

1

首先,文件是一個預定義的封裝;請不要將其用於變量名稱,否則您可能無法訪問某些設施。嘗試my_file或只是C語言fp(用於「文件指針」)。

將新信息寫入文件後,位置指針(書籤)可能位於文件末尾。多讀書會讓你無處可尋。您需要關閉並重新打開該文件,或者調用fp.seek()以訪問所需的位置。例如,fp.seek(0)會將指針重置爲文件的開頭。

+0

我會說使用'file'作爲變量名稱是好的。它很少使用,它隻影響它的使用範圍。 –

0

在python中讀取和寫入文件時,如果在對文件進行更改後不調用方法(filename).close(),它將不會保存任何內容,因爲它認爲您仍然a)寫入文件或者b)仍然閱讀它!

希望這會有所幫助!