gpt4 book ai didi

python - 脚本卡在 try- except block 中

转载 作者:太空宇宙 更新时间:2023-11-03 20:26:18 24 4
gpt4 key购买 nike

我目前正在开发一个 Python 脚本,该脚本本质上是从给定的 Twitter 帐户中抓取 Spotify 轨道,并创建找到的轨道的播放列表。该脚本在大部分情况下都能正常运行,但我正在尝试合并一些错误处理,但遇到了一些问题。我要解决的第一个错误是当用户输入无效的 Spotify/Twitter 用户名时。

到目前为止,我已经创建了 2 个单独的 try- except 循环来不断提示用户输入 Twitter 和 Spotify 用户名,直到输入有效的用户名。 Twitter try- except 循环似乎运行正常,但如果输入不正确的用户名,Spotify 循环就会卡住(即不排除有效的用户名,并且在输入 ^C 时不会终止)。

Twitter try- except 循环:

# Get request token from Twitter
reqclient = Twython(consumer_key, consumer_secret)
reqcreds = reqclient.get_authentication_tokens()

# Prompt user for Twitter account information until valid account is found
validated = False
while validated == False:
try:
t_username = input("Please enter your TWITTER username: ")
user_info = reqclient.show_user(screen_name=t_username)
# except TwythonError as e:
except:
print("Could not find Twitter account " + t_username + ". Please try again.")
# print(e)
continue
else:
t_user_id = user_info["id"]
validated = True

Spotify try- except 循环:

    # Create a SpotifyOAuth object to begin authroization code flow
scope = 'playlist-modify-public playlist-read-collaborative playlist-read-private playlist-modify-private' # Specifies access/user authorization needed to perform request (i.e. create playlist)
sp_oauth = spotipy.oauth2.SpotifyOAuth(client_id=client_id,client_secret=client_secret,redirect_uri=redirect_uri,scope=scope)

# Prompt user for Spotify account information until valid account is found
validated = False
while validated == False:
try:
s_username = input("Please enter your SPOTIFY username: ")
user_info = sp_oauth.current_user()
except:
print("Could not find Spotify account " + s_username + ". Please try again.")
continue
else:
s_user_id = user_info["id"]
validated = True

我在这里遗漏了什么吗?我觉得这真的很明显,但我似乎找不到问题(如果是这种情况,请道歉)?

最佳答案

这里发生了两件事。

首先,您输入的 s_username 值实际上从未应用于任何类型的 Spotify API 对象,因此 sp_oauth.current_user() 的结果永远不会消失改变。

第二个也是更重要的问题是,您使用的是捕获所有异常的总括except语句。这会给您带来问题,因为它还会捕获 KeyboardInterrupt 异常,该异常通常允许您通过按 CTRL-C 退出程序。您应该几乎总是将捕获的异常范围缩小到您想要处理的特定错误类型。

关于python - 脚本卡在 try- except block 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57793944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com