python导入模块全局本地命名空间

用户1649114

我在理解调用函数时导入的工作方式有问题。我相信它与范围有关,但我无法弄清楚它是如何工作的。我在网站或一些教程上检查过类似的问题,但看起来我只是不明白它是如何工作的

我有一个 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

导入彼此“重载”但保留命名空间的模块

来自分类Dev

Python导入中的命名空间

来自分类Dev

从入口点导入python模块时如何遵守父日志记录命名空间

来自分类Dev

将测试助手导入全局命名空间

来自分类Dev

Python:如何从导入的模块调用全局函数

来自分类Dev

尝试从展平的命名空间导入模块时出现ModuleNotFoundError

来自分类Dev

如何将子模块导入父命名空间?

来自分类Dev

Python中的命名空间和模块

来自分类Dev

循环导入的命名空间

来自分类Dev

导入全局模块问题

来自分类Dev

文件之间的 Python 命名空间和全局变量

来自分类Dev

PHP全局命名空间别名

来自分类Dev

全局变量的命名空间

来自分类Dev

如何导入本地模块?

来自分类Dev

将常见的js全局命名空间A-Frame项目转换为es6模块

来自分类Dev

未命名的命名空间与全局声明

来自分类Dev

用*(星号)导入而不是python中的命名空间

来自分类Dev

从python中的其他模块导入单个全局变量

来自分类Dev

扩展命名空间JS导入

来自分类Dev

在 PHP 中导入命名空间

来自分类Dev

有关导入js模块和功能范围的问题(本地/全局)

来自分类Dev

使用TypeScript导入“全局”模块

来自分类Dev

从模块导入全局变量

来自分类Dev

Python:设置属于导入模块名称空间的变量

来自分类Dev

未命名模块(导入错误Python 2.7)

来自分类Dev

无法在python中导入tensorflow:“无模块命名工具”

来自分类Dev

未命名模块(导入错误Python 2.7)

来自分类Dev

异常使用模块命名空间

来自分类Dev

删除模块以清理命名空间?