我正在尝试查找有关文件打开时退出的错误。 为此,我以交互方式(不是在 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()
时发生的情况),或者给我一条关于尝试写入关闭文件的错误消息(这是我原来的真实代码)产量,我正在努力追踪)。
我的问题答案的另一部分(不是主要部分)是我应该在代码中使用 sys.exit() 而不是 exit() 。 我正在以交互方式测试此代码片段,因为在尝试对已关闭的文件执行 I/O 操作时,我在实际代码中遇到了错误。 在我的真实代码中,当我将 exit() 更改为 sys.exit() 时,这些错误就消失了。 我认为问题在于 exit() 仅适用于交互模式,而 sys.exit() 应该在代码中使用。
中提到过site模块(启动时自动导入, 除非给出 -S 命令行选项)添加几个常量 到内置命名空间(例如 exit)。它们对于 交互式解释器 shell,不应在程序中使用。