简单文本编辑器(Python)中的错误

时间:2016-07-15 00:02:23

标签: python

作为一个初学者创建一个简单的python文本编辑器我遇到了一个令人困惑的错误,我可以在第一次打开时使用read_file()函数打印出文本文件,但是在使用write_file修改文本文件之后(),再次读取文件简单返回空格。

此外,任何对我的代码的批评将不胜感激。谢谢。

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()

2 个答案:

答案 0 :(得分:1)

首先,文件是预定义的包;请不要将它用作变量名称,否则您可能无法访问某些设施。尝试 my_file 或仅使用C语言 fp (对于"文件指针")。

将新信息写入文件后,您的位置指针(书签)可能位于文件的末尾。阅读更多将无处可寻。您需要关闭并重新打开文件,或者调用fp.seek()以到达所需位置。例如, fp.seek(0)会将指针重置为文件的开头。

答案 1 :(得分:0)

在python中读取和写入文件时,如果在更改文件后没有调用方法(filename).close(),它将不会保存任何内容,因为它认为你仍然是a)写给它或b)还在读它!

希望这有帮助!