无法打印文件

2 投票
2 回答
1553 浏览
提问于 2025-04-18 06:49

这是Python(3.4)的代码:

test = open('test.txt', 'r+')
test.truncate();
i = 0
stop = 99

while i <= stop:
    test.write("{:0>{}}|".format(i, len(str(stop))))
    i += 1

print(test.read())

这个代码能正常写入文件,但不知道为什么它不打印出来。

test = open('test.txt', 'r+')

print(test.read())

这个代码能按预期打印出来,所以我不知道问题出在哪里。

更新:

使用seek(0)解决了这个问题。你能给我链接一个关于它的解释吗?我在语言的文档里找不到。

2 个回答

1

在读取文件之前,试着用 test.seek(0) 来“回到”文件的开头。

6

文件对象指向文件中的一个特定位置。在你写完所有内容后,文件对象就指向了文件的末尾。从这个位置读取内容自然什么也得不到。

test.seek(0)
print(test.read())

这时从头开始读取。

补充说明:想象一个图示。你打开文件,里面什么都没有。

''
 ^

然后你往文件里写了一些东西。

'hello, world\n'
               ^

每次你写入文件时,内容就会添加到当前指向的位置。

'hello, world\nokay, goodbye!'
                             ^

现在你从头读到文件的末尾!

''

因为你是从末尾开始读取的,所以什么也打印不出来。seek这个命令可以让我们把指针移动到文件中的其他位置。因为我们想要读取所有内容,所以应该从位置0开始。

> seek(0)
'hello, world\nokay, goodbye!'
 ^

从头读取就能读取到所有内容。

hello, world
okay, goodbye!

撰写回答