我在理解调用函数时导入的工作方式有问题。我相信它与范围有关,但我无法弄清楚它是如何工作的。我在网站或一些教程上检查过类似的问题,但看起来我只是不明白它是如何工作的
我有一个 python 脚本 MyScipt.py 包含
def usage(errorID):
# import sys
if errorID == 0:
print("blah blah blah")
print("blah blah blah")
print("blah blah blah"+\
sys.exit()
def main():
import sys
# print(len(sys.argv),sys.argv)
try:
rootDir = sys.argv[1]
except IndexError:
usage(0)
# MAIN PROGRAM
#
if __name__ =="__main__":
main()
执行失败
PS D:\xxx\python> python .\myScript.py blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah 么么哒回溯(最后一次调用):文件“.\myscript.py”,第 288 行,在主 rootDir=sys.argv [1] IndexError:列表索引超出范围
在处理上述异常的过程中,又发生了一个异常:
回溯(最近一次调用):文件“.\myScript.py”,第 299 行,在 main() 文件“.\myScript.py”,第 290 行,在主要用法中(0) 文件“.\myScript.py” ,第 15 行,使用 sys.exit() NameError: name 'sys' is not defined
如果我取消注释第二行(#import sys),它将起作用
如何使导入可用于脚本中的所有函数?
提前致谢
只需在文件顶部而不是函数中导入 sys 即可。
import sys
def usage(errorID):
if errorID == 0:
print("blah blah blah")
print("blah blah blah")
print("blah blah blah"+\
sys.exit()
def main():
import sys
# print(len(sys.argv),sys.argv)
try:
rootDir = sys.argv[1]
except IndexError:
usage(0)
# MAIN PROGRAM
#
if __name__ =="__main__":
main()
您收到第二个错误,因为您没有将任何参数传递给脚本,然后 sys 未定义,因此您不能 sys.exit()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句