以下是A Byte of Python教程中的代码:
import sys
filename = 'poem.txt'
def readfile(filename):
#Print a file to standard output
f = file(filename)
while True:
line = f.readline()
if len(line) == 0:
break
print line,
f.close()
if len(sys.argv) < 2:
print 'No action specified'
sys.exit() //<--This is where the error is occurring
if sys.argv[1].startswith('--'):
option = sys.argv[1][2:] #fetches sys.argv[1] without first 2 char
if option == 'version':
print 'Version 1.2'
elif option == 'help':
print '''\
This program prints files to the standard output.
Any number of files can be specified.
Options include:
--version: Prints the version number
--help: Displays this help'''
else:
print 'Unknown option'
sys.exit()
else:
for filename in sys.argv[1:]:
readfile(filename)
当我运行此代码时,出现错误:
Traceback (most recent call last):
File "C:/Python/sysmodulepr.py", line 17, in <module>
sys.exit()
SystemExit
我不明白为什么。请帮忙。
答案 0 :(得分:3)
它告诉你sys.exit()已在你的程序的第17行执行。
The entry for for sys.exit in the Python documentation告诉您这将退出您的计划。
如果没有产生其他输出,这条线就无法执行,所以我认为问题中缺少一些东西。
答案 1 :(得分:2)
如果您正在使用IDLE,它仍会打印堆栈。尝试从命令行运行脚本,在IDE外部执行时不会打印该错误消息。
答案 2 :(得分:1)
这不是错误。 sys.exit()
引发SystemExit
异常以允许try:... finally
阻止清理已使用的资源
尝试空闲:
import sys
sys.exit()
来自sys.exit()的文档:
退出Python。这是通过引发SystemExit异常来实现的,因此可以接受try语句的finally子句指定的清理操作,并且可以拦截外层的退出尝试。
修改强>
除非您尝试在某些交互式解释器中运行脚本(例如Idle),否则不应正常打印错误。 没什么好担心的,但是脚本看起来像是独立的,所以你应该这样使用它。