请帮助我根据功能的不同来澄清这两个python语句的概念:
sys.exit(0)
os._exit(0)
根据如何在没有回溯的情况下退出Python?,调用sys.exit()Python脚本应该在没有回溯的情况下静默退出.
import sys
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用python -i "exit.py"(或从Notepad ++)从 Windows 7上的命令行启动脚本时,SystemExit会显示异常的回溯.
U:\>python -i "exit.py"
Traceback (most recent call last):
File "exit.py", line 2, in <module>
sys.exit(0)
SystemExit: 0
>>>
Run Code Online (Sandbox Code Playgroud)
为什么sys.exit()从Windows命令行运行时显示回溯?
(供参考,我在Windows 7上使用Python 3.6.4)
我有以下小python脚本来运行本地服务器来测试一些html:
print('opened')
from http.server import HTTPServer, SimpleHTTPRequestHandler
server_address = ('', 8000)
httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)
print("Listening at https://127.0.0.1:8000/ . . .")
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)
当我在终端中运行它时,它会阻止print语句:没有打印.但服务器工作,我可以localhost:8000在浏览器中访问我的html文件.但是,如果我注释掉最后一行,则调用serve_forever(),它可以打印"打开"和"收听https:127.0.0.1:8000 /"..'.当然,它实际上并不起作用,因为现在服务器没有运行.
我觉得这很混乱.前一行在最后一行之前执行.为什么最后一行会导致前一行不起作用?
Windows7上的Python3,如果有人要问,但我怀疑这是相关的.