【发布时间】:2012-02-05 08:38:49
【问题描述】:
这里是 Python 新手。我正在编写一个脚本,可以将一些输出转储到文件或标准输出,具体取决于传递给它的参数。在解释参数时,我将open'ed 文件或stdout 分配给名为output_file 的全局变量,脚本的其余部分可以使用它来写入输出,而不管选择了哪种类型的流。在脚本的最后我closeoutput_file。这对于文件流来说是合适的,虽然它对于标准输出来说是多余的,但我使用其他编程语言的经验表明,在程序结束之前立即显式关闭标准输出没有危害。
但是,每当 stdout 用于输出(并随后关闭)时,我都会收到“ValueError: 'I/O operation on closed file.'”。我知道这个错误不是由我调用关闭标准输出直接产生的,而是在我的脚本返回后发生的。我的问题是:为什么会发生这种情况,有没有办法手动关闭标准输出而不触发它? (我知道我可以通过仅在选择文件时有条件地关闭流来轻松解决此问题,但我想知道是否/为什么需要这样做。)
很简单的示范sn-p:
from sys import stdout
stdout.close()
【问题讨论】:
-
请在关闭 stdout() 后检查您对 output_file 的任何操作的代码,或者在此处放置更多代码,因为给定的 sn-p 仅当在 sn- 之后使用 output_file.write(..) 时才会产生 ValueError p.
-
给定的 sn-p 会自行产生错误。
标签: python python-3.x stdout