Python不会在我的.py文件中打开模块

时间:2018-12-02 03:13:20

标签: python-3.x

我正在处理一些代码,该代码在文本文件(“ save [#]”)中以以下格式检索一行: “ [名称],[布尔值或整数值]” (目的是能够检索它以保存游戏状态) 问题是,每当我尝试从模块返回值时,都会得到以下信息:

Traceback (most recent call last):
    File "//IHS-FS-001.ihs.local/Cohort2020$/2ELGAG1/python/srctg/test.py", line 5, in <module>
retrieve()
    File "//IHS-FS-001.ihs.local/Cohort2020$/2ELGAG1/python/srctg/test.py", line 3, in retrieve
    if retrieve.check("test", 1) == True:
AttributeError: 'function' object has no attribute 'check'

test属性是用于测试游戏代码的测试模块:

import retrieve.py
def retrieve():
    if retrieve.check("test", 1) == True:
        return True
retrieve()

retrieve属性本身的设置如下:

import error
def check(i_name, save):
    save = str(save)
    save_n = "save" + save + ".txt"
    save_f = open(save_n, "r")
    list = save_f.readlines()
    for item in range(len(list)):
        list[item] = list[item].strip()
        list[item] = list[item].split(",")
        list[item][1] = list[item][1]
    for item in range(len(list)):
        if i_name == list[item][0]:
            i_return = list[item][1]
    if bool_check(i_return) == True:
        i_return = bool(i_return)
    elif int_check(i_return) == True:
        i_return = int(i_return)
    else:
        print(error.code("001"))
        return "error"
    return i_return
def int_check(value):
    while True:
        try:
            value = int(value)
            return True
            break
        except ValueError:
            return False
            break
def bool_check(value):
    while True:
        try:
            value = bool(value)
            return True
            break
        except ValueError:
            return False
            break

1 个答案:

答案 0 :(得分:0)

不要在导入中包含.py。这会尝试在名为py的包中导入名为retrieve的模块,这可能不是您的意思。

import retrieve as retrieve_module

def retrieve():
    if retrieve_module.check("test", 1) == True:
        return True

此外,请勿编写与刚导入的模块同名的函数。更改一个或另一个的名称。这就是为什么它找不到.check属性的原因。它在retrieve函数内部而不是retrieve模块内部,因为在调用该函数之前,您已在全局命名空间中覆盖了它(通过执行函数定义)。