在调用函数时,我有一个问题是了解导入是如何工作的。我相信它与范围有关,但我无法弄清楚它是如何工作的。我在网站或一些教程上检查了类似的问题,但看起来我只是不明白它是如何工作的
我有一个包含
的python脚本MyScipt.pydef 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 Traceback(最近一次调用最后一次):文件 主题为“。\ myScript.py”,第288行 rootDir = sys.argv [1] IndexError:列表索引超出范围
在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用最后一次):文件“。\ myScript.py”,第299行, 在 main()文件“。\ myScript.py”,第290行,在main中 usage(0)文件“。\ myScript.py”,第15行,正在使用中 sys.exit()NameError:名称'sys'未定义
如果我取消注释第二行(#import sys),它将起作用
如何在我的脚本中为所有功能提供导入?
提前致谢
答案 0 :(得分:2)
感谢大家的反馈。
import sys
语句必须放在脚本的开头才能解决此错误
答案 1 :(得分:0)
只需在文件顶部而不是在函数中导入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()