当我运行以下代码时,它只显示一个新行,而不是输出文本。
f = open('log.txt', 'a+')
nick = raw_input('Choose a nickname: ')
print('Your nickname is now ' + nick)
f.write(nick + ' has joined the room.\n')
print f.read()
当我查看log.txt时,它中包含正确的文本。
答案 0 :(得分:1)
这种情况正在发生,因为当您写入这样的文件时,它会将指针留在文件的末尾,因此当您执行f.read()时,它只会显示文件末尾的空白区域(之后) “尼克+'加入了房间。\ n'”)。
在print语句之前添加行f.seek(0)
。 (这会将指针放回到最开始.0可以替换为你希望指针从哪个位置开始)
答案 1 :(得分:0)
当您以"a+"
打开文件时,您专门将计算机指向文件的最后一行并告诉它“从这里开始阅读”。这就是你能够追加它的原因,因为它不会从最后开始写任何东西。
这也是调用f.read()
找不到任何东西的原因。如果你有文字:
File: foo.txt
Body:
Nick has joined the room.
Dave has joined the room.
Sally has joined the room.
但是当你打开文件时,你会在最后一段时间之后打开它,所有你会读到的是:
''
要解决此问题,请使用seek
。
f = open('foo.txt','a+') # better to use a context manager!
f.write("bar.\nspam.\neggs.")
f.read()
>> ''
f.seek(0) # moves the pointer to the beginning of the file
f.read()
>> bar.
>> spam.
>> eggs.