While 循环崩溃,因为 HTTP 请求后键值对不存在
While Loop Crashing because Key-Value pair doesn't exist after HTTP Request
我有一个从 GitHub API.
中获取信息的函数
问题是,如果 API,其中包括 User
和 Repo
不存在 returns {message , "Not Found"}
所以我 运行 一个 while loop
一直在寻找,直到正确输入用户名和 repo,所以 API returns 是正确的信息。
问题是,当它正确时,while
循环中断,因为 message
键不再存在
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
class User:
def __init__(self, json_def):
self.__dict__ = data
user = User(data)
while user.message:
print("User or Repository not found, please re-enter...")
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
user = User(data)
有什么方法可以让我有一个 while 语句,当 user.message
不再存在时它不会因错误而崩溃:AttributeError: 'User' object has no attribute 'message'
我已经尝试实施 while user.message != None
但也没有用。
以这种方式构建代码怎么样?
class User:
def __init__(self, data):
self.__dict__ = data
user = User({})
while(true):
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
if "message" in data.keys():
continue
else:
user = User(data)
break
尝试使用:
if hasattr(user, 'message'):
# user.message here
在你的问题中,像这样使用它:
...
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
user = User(data)
if not hasattr(user, 'message'):
break
我有一个从 GitHub API.
中获取信息的函数问题是,如果 API,其中包括 User
和 Repo
不存在 returns {message , "Not Found"}
所以我 运行 一个 while loop
一直在寻找,直到正确输入用户名和 repo,所以 API returns 是正确的信息。
问题是,当它正确时,while
循环中断,因为 message
键不再存在
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
class User:
def __init__(self, json_def):
self.__dict__ = data
user = User(data)
while user.message:
print("User or Repository not found, please re-enter...")
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
user = User(data)
有什么方法可以让我有一个 while 语句,当 user.message
不再存在时它不会因错误而崩溃:AttributeError: 'User' object has no attribute 'message'
我已经尝试实施 while user.message != None
但也没有用。
以这种方式构建代码怎么样?
class User:
def __init__(self, data):
self.__dict__ = data
user = User({})
while(true):
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
if "message" in data.keys():
continue
else:
user = User(data)
break
尝试使用:
if hasattr(user, 'message'):
# user.message here
在你的问题中,像这样使用它:
...
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
user = User(data)
if not hasattr(user, 'message'):
break