作为一个初学者创建一个简单的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()
答案 0 :(得分:1)
首先,文件是预定义的包;请不要将它用作变量名称,否则您可能无法访问某些设施。尝试 my_file 或仅使用C语言 fp (对于"文件指针")。
将新信息写入文件后,您的位置指针(书签)可能位于文件的末尾。阅读更多将无处可寻。您需要关闭并重新打开文件,或者调用fp.seek()以到达所需位置。例如, fp.seek(0)会将指针重置为文件的开头。
答案 1 :(得分:0)
在python中读取和写入文件时,如果在更改文件后没有调用方法(filename).close()
,它将不会保存任何内容,因为它认为你仍然是a)写给它或b)还在读它!
希望这有帮助!