【问题标题】:My Python Code is not Writing My file. Why?我的 Python 代码没有写入我的文件。为什么?
【发布时间】:2019-11-09 20:49:00
【问题描述】:

我似乎无法理解为什么这段代码没有写入我的文件。

当我删除循环时,它可以完美运行。我似乎无法意识到循环正在做什么,它不会让它写。

filename = 'guest_book.txt'

with open(filename, 'w') as file_object:

    while True:
        name = input("Nombre:")
        file_object.write(name)
        print(f"Welcome {name}!\n")

我希望该代码打印欢迎消息并写入guest_book.txt 文件。

【问题讨论】:

  • 你永远不会结束循环;如果您通过某种方式停止循环,它会写入文件吗?
  • 一些系统在内存中使用缓冲区,它们仅在您关闭文件时才写入文件。没有while,它会结束程序并关闭文件,但使用while True,你必须破坏代码,它可能无法保存。
  • 是的。使用“中断”,但我看不到欢迎消息并且控制台关闭。
  • 为了提高性能,如果文件句柄是 stderr 流,大多数应用程序只会刷新每个应用程序写入。这允许程序“批量”写入。从而减少系统(即内核)调用的数量以及许多其他好处。

标签: python file loops writing


【解决方案1】:

with open 块终止之前,Python 不会刷新文件,因为循环是无限的,所以永远不会发生这种情况。

如果需要,您可以添加显式刷新:

with open(filename, 'w') as file_object:
    while True:
        name = input("Nombre:")
        file_object.write(name)
        print(f"Welcome {name}!\n")
        file_object.flush() # Here!

【讨论】:

  • 很棒的穆雷尼克。那工作得很好。感谢大家! :)
  • 如果这回答了你的问题,请接受这个答案。
猜你喜欢
  • 1970-01-01
  • 2020-10-07
  • 2013-10-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
相关资源
最近更新 更多