没有在Python中输出的行

时间:2014-01-28 17:00:28

标签: python python-3.x io osx-mavericks

当我运行以下代码时,它只显示一个新行,而不是输出文本。

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时,它中包含正确的文本。

2 个答案:

答案 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.