2016-07-15 79 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)仍然阅读它!

希望这会有所帮助!