我正在尝试将 .txt 文件中的数据插入 SQLite 数据库,但是每当我运行我的代码时,我都会收到此错误:NameError: name 'get_value' is not defined
。这是因为我试图在类内的函数中调用函数吗?我没有包含代码的其他部分,因为我认为不需要它们,但如果它们让我知道,我会添加它。
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,))
...
new_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
...
答案 0 :(得分:1)
我不知道您是否还有其他属性与该类的实例相关联,但通常要访问类的方法和属性,您应该使用 self
。
这是一个 Intro to Designing Classes 页面,其中介绍了 self 及其使用方式。
由于我对您的问题的看法有限,以下内容可能会奏效:
class InputFromIPLog:
...
def get_value(self, item):
info = item.strip().split(':')
val = info[1].strip().split(',')
return val[0].strip()
def insert_data(self):
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 = self.get_value(item)
elif "IP Address" in item:
input_ip_address = self.get_value(item)
elif 'XUID' in item:
input_xuid = self.get_value(item)
elif 'MID' in item:
input_mid = self.get_value(item)
cursor.execute("INSERT INTO userinfo (gamertag, ip, xuid, mid) values(?, ?, ?)",
(input_gamertag, input_ip_address, input_xuid, input_mid,))
...
此外,在您的代码中,get_value
不接受任何参数,但是当您使用它时,您会将 item
传递给它。我已经更新了上面代码中函数的参数以反映您的使用情况。