Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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&;数据库_Python_Sqlite - Fatal编程技术网

调用类中函数的内部函数| Python&;数据库

调用类中函数的内部函数| Python&;数据库,python,sqlite,Python,Sqlite,我试图将.txt文件中的数据插入SQLite数据库,但每当我运行代码时,都会出现以下错误:NameError:name“get\u value”未定义。这是因为我试图调用类内函数中的函数吗?我没有包括我的代码的其他部分,因为我认为它们是不必要的,但如果它们是让我知道,我会添加它 Python文件: class InputFromIPLog: ... def get_value(): info = item.strip().split(':')

我试图将.txt文件中的数据插入SQLite数据库,但每当我运行代码时,都会出现以下错误:
NameError:name“get\u value”未定义
。这是因为我试图调用类内函数中的函数吗?我没有包括我的代码的其他部分,因为我认为它们是不必要的,但如果它们是让我知道,我会添加它

Python文件:

class InputFromIPLog:
    
    ...

    def get_value():
        info = item.strip().split(':')
        val = info[1].strip().split(',')
        return val[0].strip()

    def insert_data():
        with open(f"new_iplog.txt", "r") as f:
            file_data = f.readlines()

        input_gamertag = ""
        input_ip_address = ""
        input_xuid = ""
        input_mid = ""

        for item in file_data:
            if "Gamertag" in item:
                input_gamertag = get_value(item)
            elif "IP Address" in item:
                input_ip_address = get_value(item)
            elif 'XUID' in item:
                input_xuid = get_value(item)
            elif 'MID' in item:
                input_mid = get_value(item)

        cursor.execute("INSERT INTO userinfo (gamertag, ip, xuid, mid) values(?, ?, ?)", (input_gamertag, input_ip_address, input_xuid, input_mid,))

...
新的_iplog.txt文件:

...

Gamertag: UnknownUser                       
IP Address: 10.0.0.1
XUID: 000301F23B9F6ED4
MID: FB00FDA037CEB46E

Gamertag: AnotherUnknownUser                   
IP Address: 1.1.1.1
XUID: 0009000005E96E9B
MID: FB00F5413910FEDD

...

我不知道您是否有其他属性绑定到此类的实例,但通常要访问类的方法和属性,您应该使用
self

这里有一页介绍了self及其使用方法

就我对您的问题的有限看法而言,下面的方法可能会奏效:

类InputFromIPLog:
...
def get_值(自身,项目):
info=item.strip().split(“:”)
val=info[1].strip().split(',')
返回值[0]。条带()
def插入_数据(自身):
将open(f“new_iplog.txt”,“r”)作为f:
file_data=f.readlines()
输入_gamertag=“”
input_ip_address=“”
输入_xuid=“”
输入_mid=“”
对于文件\u数据中的项目:
如果项目中有“玩家代号”:
输入\玩家代号=自我。获取\值(项目)
elif项目中的“IP地址”:
输入\u ip\u地址=自身。获取\u值(项目)
项目中的elif“XUID”:
input_xuid=self.get_值(项目)
项目中的elif“MID”:
输入\u mid=self.get\u值(项目)
cursor.execute(“插入userinfo(gamertag、ip、xuid、mid)值(?、、?)”,
(输入玩家代号、输入ip地址、输入xuid、输入mid)
...

另外,在您的代码中,
get\u value
不接受任何参数,但当您使用它时,会将
item
传递给它。我已经更新了上面代码中函数的参数,以反映您的使用情况。

我找不到重复项,但确实存在重复项,因此我不会发布答案。您需要
self.get_value
来引用该方法。方法名称本身不在作用域中。您需要在类的实例上显式调用该方法(在本例中为
self
)。这是一个骗局,可以解释,但这是一个可怕的骗局。