raw_input
我遇到了一个奇怪的问题。它似乎没有等待用户输入。这是失败的方法:
def displayCaptcha(self):
url = 'https://www.google.com/recaptcha/api/challenge?k=xxxxxxxx'
r = requests.get(url)
m = re.search("challenge : '(.+)'", r.text)
if not m:
raise Exception('Could not fetch ReCaptcha challange code')
c = m.groups(0)
# Fetch the captcha image from Google's servers
r = requests.get("https://www.google.com/recaptcha/api/image?c=%s" % c)
Image.open(StringIO(r.content)).show()
captchaResponse = raw_input('Enter Captcha: ')
# Problem!
print 'This prints even before user has entered any key'
return c, captchaResponse
输出:
God@War:$ echo "190106193" | ./liker.py username password
Enter Captcha: This prints even before user has entered any key
Login failed. Exiting ...
奇怪的是它工作正常。我写了代码,现在它难倒了我。但是,从我所看到的print
之后raw_input
不应该在用户输入密钥之前打印,所以看起来我的问题就在这里。
有什么想法吗?
哪个电话......
try:
r = self.login()
except CaptchaError:
# Login failed site requesting captcha
r = self.loginWithCaptcha()
# If login wasn't successful, return
if not r:
return False
# Login is successful, set login status to True, fetch
# the users OAuth token
self.loggedIn = True
self.token = self.getOauthToken()
# Save the session to disk so the user hasn't got to
# login each time.
self.saveSession()
return True