do not understand this use of sys module
下面是一个教程中的python字节代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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) |
运行此代码时,出现以下错误:
1 2 3 4 | Traceback (most recent call last): File"C:/Python/sysmodulepr.py", line 17, in <module> sys.exit() SystemExit |
我不明白为什么。请帮忙。
它告诉您,sys.exit()已在程序的第17行执行。
python文档中的for sys.exit条目告诉您,这将退出程序。
如果不产生其他输出,这条线就无法执行,所以我认为问题中缺少了一些东西。
如果您使用的是IDLE,它将无论如何打印堆栈。尝试从命令行运行脚本,当在IDE外执行时,它不会打印该错误消息。
这不是错误。
尝试闲置:
1 2 3 | import sys sys.exit() |
从sys.exit()的文档中:
Exit from Python. This is implemented by raising the SystemExit exception, so cleanup actions specified by finally clauses of try statements are honored, and it is possible to intercept the exit attempt at an outer level.
编辑
除非您尝试在一些交互式解释程序(例如idle)中运行脚本,否则通常不应打印错误。这没什么好担心的,但是脚本看起来是独立的,所以您应该这样使用它。