【问题标题】:How to display 1 to 10 using Python 3 file operation and loop?如何使用 Python 3 文件操作和循环显示 1 到 10?
【发布时间】:2020-03-19 19:55:28
【问题描述】:

下面是我在 python 3 中的代码。我正在尝试使用 python 文件操作和循环打印 1 到 10。

for i in range(1, 11):
    file = open('text.txt', 'a+')
    file.write(str(i))
    file.write('\n')
    content = file.read()
    print(content)
    file.close()

它不打印 1 到 10,而是什么也不打印。 here is a photo of the output。 这段代码有什么问题,有没有更好的方法来编写这段代码?

【问题讨论】:

  • 您必须将文件流指针重新设置为它的开头 read() 一些东西 - 它总是在您刚刚写的内容之后.. 那里没有更多可阅读的内容。如果你将它重置为开始,你会得到类似 1\n1\n2\n1\n2\n3\n 等的东西......写入整个文件,关闭它,重新阅读并打印它。
  • 另外,您需要在关闭文件后读取/打印,否则内容可能仍在缓冲区中尚未写入。

标签: python-3.x loops file


【解决方案1】:

向文件写入内容后,文件指针指向文件末尾。此时,您正在尝试从文件中读取,但没有从该位置开始的数据。因此,您将得到一个空输出。但是,您的代码将成功写入文件(您可以打开文件并验证)。

最好的方法是先写入文件,然后再读取。

一个合乎逻辑的解决方案是在每次写入后返回一行并阅读您刚刚编写的内容。不幸的是,这可能导致竞争条件,python 不允许你这样做。有趣的是,您可以在每次写入后使用file.seek(0, os.SEEK_SET) 查找文件的开头并从头到尾读取内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多