我在互联网上进行搜索,但是我仍然不明白为什么我的代码无法正常工作。我有一个名为Era.py的Python文件,在该文件中有此类:
class oldUser:
def __init__(self, login, password):
self.login = login
self.password = password
results = "SELECT * FROM users WHERE username = '" + login + "'" + " AND password = " + "'" + password + "'"
mycursor.execute(results)
results = mycursor.fetchall()
if not results:
print("User don't exist or wrong login details! \n")
print(add_to_database)
else:
print("Login successfully!")
from Era import input
execute = input(login)
在另一个Python文件read_from_database.py中,我有以下内容:
=IF(S56="P",CONCATENATE(LEFT(D58,5),$S$1,"PM"), CONCATENATE(LEFT(D58,5),$S$1,"AM"))
但是当我尝试从Era导入时,输入错误: ImportError:无法从“时代”导入名称“输入”
所有文件都在同一个文件夹中,理论上应该可以使用,一周前它可以使用
答案 0 :(得分:0)
这里的问题是,您在尝试使用Python的内置input
函数时会覆盖它。
您可以在input
文件的Era.py
类中看到此内容。
此类尝试使用内置的input
函数来收集user_input
。
因此,尝试from Era import input
有时会失败,因为Python对要做的事情感到困惑。
最重要的是,除非您知道自己在做什么,否则永远不要覆盖任何内置函数(尤其是在您同样需要它们的情况下)。
此外,在Python中,类名通常以大写字母开头且不使用下划线,而函数和模块(例如此处的Era
)只有小写字母和下划线。
因此,将您的代码更改为以下内容:
# era.py
class Input:
def __init__(self, username):
self.username = username
close = ["X", "x"]
print("So, let's start, sweetheart, press X when you want to stop. \n")
user_input = input("")
user_input = user_input.upper()
while user_input not in close:
user_in = Subject(username, user_input)
user_input = input("")
print("Good bye, sweetheart!")
# read_from_database.py
from era import Input
class OldUser:
def __init__(self, login, password):
self.login = login
self.password = password
results = "SELECT * FROM users WHERE username = '" + login + "'" + " AND password = " + "'" + password + "'"
mycursor.execute(results)
results = mycursor.fetchall()
if not results:
print("User don't exist or wrong login details! \n")
print(add_to_database)
else:
print("Login successfully!")
execute = Input(login)
您可能还想看看Input
类,因为可以通过几种方式对其进行简化。