为什么“with open...”块中的 exit() 会导致终端上打印 31?

问题描述 投票:0回答:1

我正在尝试查找有关文件打开时退出的错误。 为此,我以交互方式(不是在 IDE 中,而是在运行

Python
后进入终端)将以下代码片段输入到 Python 3.9:

>>> import csv
>>> with open ("deleteMe", "w", newline="") as f:
...     dmcsv = csv.writer(f)
...     dmcsv.writerow(["this should be a line of text"])
...     exit()
... 
31

如您所见,它在终端上打印了

31
。 为什么?这意味着什么? 我在 macOS Sonoma (14.6.1) 上运行

我期望 Python 要么默默退出(这就是当我在 Python 交互式提示中键入

exit()
时发生的情况),或者给我一条关于尝试写入关闭文件的错误消息(这是我原来的真实代码)产量,我正在努力追踪)。

python csv exit with-statement
1个回答
0
投票

我的问题答案的另一部分(不是主要部分)是我应该在代码中使用 sys.exit() 而不是 exit() 。 我正在以交互方式测试此代码片段,因为在尝试对已关闭的文件执行 I/O 操作时,我在实际代码中遇到了错误。 在我的真实代码中,当我将 exit() 更改为 sys.exit() 时,这些错误就消失了。 我认为问题在于 exit() 仅适用于交互模式,而 sys.exit() 应该在代码中使用。

site模块(启动时自动导入, 除非给出 -S 命令行选项)添加几个常量 到内置命名空间(例如 exit)。它们对于 交互式解释器 shell,不应在程序中使用。

这在Python中exit()和sys.exit()之间的区别

中提到过
© www.soinside.com 2019 - 2024. All rights reserved.