首页 > python 的 EOFError: EOF when reading a line 是什么原因?

python 的 EOFError: EOF when reading a line 是什么原因?

在程序执行过程中,出现过如题的错误信息。

google了一些,好像是python或部署的原因,但是有这些错误信息:


   Traceback (most recent call last):

   ...

   File "/usr/local/lib/python2.7/urllib.py", line 84, in urlopen
    return opener.open(url)

  File "/usr/local/lib/python2.7/urllib.py", line 205, in open
    return getattr(self, name)(url)

  File "/usr/local/lib/python2.7/urllib.py", line 356, in open_http
    return self.http_error(url, fp, errcode, errmsg, headers)

  File "/usr/local/lib/python2.7/urllib.py", line 369, in http_error
    result = method(url, fp, errcode, errmsg, headers)

  File "/usr/local/lib/python2.7/urllib.py", line 663, in http_error_301
    return self.http_error_302(url, fp, errcode, errmsg, headers, data)

  File "/usr/local/lib/python2.7/urllib.py", line 632, in http_error_302
    data)

  File "/usr/local/lib/python2.7/urllib.py", line 659, in redirect_internal
    return self.open(newurl)

  File "/usr/local/lib/python2.7/urllib.py", line 205, in open
    return getattr(self, name)(url)

  File "/usr/local/lib/python2.7/urllib.py", line 356, in open_http
    return self.http_error(url, fp, errcode, errmsg, headers)

  File "/usr/local/lib/python2.7/urllib.py", line 369, in http_error
    result = method(url, fp, errcode, errmsg, headers)

  File "/usr/local/lib/python2.7/urllib.py", line 694, in http_error_401
    return getattr(self,name)(url, realm)

  File "/usr/local/lib/python2.7/urllib.py", line 758, in retry_http_basic_auth
    user, passwd = self.get_user_passwd(host, realm, i)

  File "/usr/local/lib/python2.7/urllib.py", line 787, in get_user_passwd
    user, passwd = self.prompt_user_passwd(host, realm)

  File "/usr/local/lib/python2.7/urllib.py", line 796, in prompt_user_passwd
    host))

EOFError: EOF when reading a line

这是权限问题?

到底是什么问题呢?


安装SublimeREPL,然后编译python文件的时候,可以选择【Tools】——【sublimeREPL】——【python】——【Python – RUN current file】即可提示用户输入。应该可以解决sublime下面使用raw_input函数报错的问题。


根据楼主在评论里的回复,如果想继续使用urllib的话,可以使用FancyURLopener并且自己定义一个prompt_user_password方法。

urllib的易用性的确是经常为人所诟病.. 所以另外一个办法是,换用一个更好用的库。我推荐python-requests。用这个库就可以这么写(复制自那个链接):

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
【热门文章】
【热门文章】