Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开另一个python文件时出现NameError_Python_Python 2.7 - Fatal编程技术网

打开另一个python文件时出现NameError

打开另一个python文件时出现NameError,python,python-2.7,Python,Python 2.7,我一直在尝试从我的主python文件打开一个python文件: from banner import * from hexed import * # this one is the file I am trying to open 我试图通过将文件作为模块来打开它们 这就是我如何称呼他们我的横幅文件工作完美,但不能说同样的hexed文件: def options(self): while True: try: try: main=raw_in

我一直在尝试从我的主python文件打开一个python文件:

from banner import * 
from hexed import *  # this one is the file I am trying to open
我试图通过将文件作为模块来打开它们 这就是我如何称呼他们我的横幅文件工作完美,但不能说同样的hexed文件:

def options(self):
while True:
    try:
        try:
            main=raw_input(bcolors.B + "PYDRAGON> " + bcolors.E)
            if main == "msf":
            elif main == "crypto":
                hexed() #THIS IS WHERE I AM CALLING ANOTHER FILE
            elif main == "print":
                banner() #THIS ONE WORKS FINE
            else:
                print bcolors.R + "--> check your input <--" + bcolors.E
                time.sleep(1)
        except KeyboardInterrupt:
            print (bcolors.R + bcolors.U  + "\033[1m" + "\nCtrl-C Pressed! Use 'exit' to close the tool!" + bcolors.E)
            time.sleep(0.9)
            sys.exit()
            pass
    except EOFError:
        print (bcolors.R + bcolors.U + "\nUser Requsted An Interrupt ..Exixting.." + bcolors.E)
        time.sleep(0.9)
        sys.exit()
        pass
我希望这些信息能有所帮助
谢谢

函数名是
witch()
,而不是
hexed()
。因此:

更改此项:

        elif main == "crypto":
            hexed() #THIS IS WHERE I AM CALLING ANOTHER FILE
为此:

        elif main == "crypto":
            witch() #THIS IS WHERE I AM CALLING ANOTHER FILE

函数名是
witch()
,而不是
hexed()
。因此:

更改此项:

        elif main == "crypto":
            hexed() #THIS IS WHERE I AM CALLING ANOTHER FILE
为此:

        elif main == "crypto":
            witch() #THIS IS WHERE I AM CALLING ANOTHER FILE

我不确定您真正想做什么,但您显然应该重新阅读有关导入的文档

警告/您当前的问题-执行以下操作时:

from somemodule import *
Python在
sys.path
中查找“somemodule.py”,将文件作为模块加载,从模块中收集所有顶级公共名称(“顶级”:在模块级定义,“public”:在模块的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>属性中公开,或者-如果未定义
\uuuuuuuu,并将它们绑定到当前名称空间中(最终重新绑定已定义的名称)

所以在这两行之后:

from banner import * 
from hexed import *
您已经在脚本的全局命名空间中注入了
banner.py
hexed.py
中定义的所有名称。显然,您在某个地方定义了一个名为
banner()
,被调用的是这个函数,而不是“hexed.py文件”-您不“调用文件”,这毫无意义,您可以调用函数,您可以调用类,但您不能“调用文件”(也不能“调用模块”FWIW,模块不可调用)。显然,在“hexed.py”模块中没有名为“hexed”的函数,因此出现了
namererror

解决方案很清楚:用显式导入替换星形导入(无论如何都应该避免,因为它们是维护的噩梦),导入模块并通过其限定名称调用函数,即:

# imports the whole "banner" module
import banner
# the first "banner" is the module name, the second is the function
banner.banner()
或者只导入要使用的函数并直接调用它:

# imports the "banner" function from the "banner" module
from banner import banner
# calls the banner function
banner()

哦,当我们这样做的时候:
namererror
不会在“打开”模块的过程中发生,但是当您尝试使用尚未定义的名称时(此处
hexed

我不确定您真正想做什么,但您显然应该重新阅读有关导入的文档

警告/您当前的问题-执行以下操作时:

from somemodule import *
Python在
sys.path
中查找“somemodule.py”,将文件作为模块加载,从模块中收集所有顶级公共名称(“顶级”:在模块级定义,“public”:在模块的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>属性中公开,或者-如果未定义
\uuuuuuuu,并将它们绑定到当前名称空间中(最终重新绑定已定义的名称)

所以在这两行之后:

from banner import * 
from hexed import *
您已经在脚本的全局命名空间中注入了
banner.py
hexed.py
中定义的所有名称。显然,您在某个地方定义了一个名为
banner()
,被调用的是这个函数,而不是“hexed.py文件”-您不“调用文件”,这毫无意义,您可以调用函数,您可以调用类,但您不能“调用文件”(也不能“调用模块”FWIW,模块不可调用)。显然,在“hexed.py”模块中没有名为“hexed”的函数,因此出现了
namererror

解决方案很清楚:用显式导入替换星形导入(无论如何都应该避免,因为它们是维护的噩梦),导入模块并通过其限定名称调用函数,即:

# imports the whole "banner" module
import banner
# the first "banner" is the module name, the second is the function
banner.banner()
或者只导入要使用的函数并直接调用它:

# imports the "banner" function from the "banner" module
from banner import banner
# calls the banner function
banner()

哦,当我们这样做的时候:
namererror
不会在“打开”模块的过程中发生,但是当您尝试使用尚未定义的名称时(此处
hexed

请发布您的
hexed
模块,并检查在您的
hexed.py
文件/module.hexed中是否有任何名为
hexed
的可调用函数。hexed只是一个模块,您确定在hexed模块中确实有一个“hexed”函数吗?
hexexed()
调用应该是
witch()
我的hexed模块中没有hexed名称,尽管其中有一个“hex”函数,我认为它不会导致任何问题。请发布您的
hexed
模块,并检查您的
hexed.py
文件/模块中是否有任何可调用的名称
hexed
。hexed只是一个模块,您确定您确实有一个“hexed”吗hexed模块内部的函数?调用
hexed()
应该是
witch()
在我的hexed模块中没有hexed名称,尽管其中有一个“hex”函数,我认为它不会导致任何问题谢谢我认为通过文件名调用会打开它们我的坏谢谢我认为通过文件名调用会打开它们我的坏