为什么urlopen read()会产生意外行为

时间:2015-05-11 16:45:21

标签: python-3.x urllib

这可能是一个天真的问题,因为我是一个蟒蛇初学者,所以这里......

这有效......

import urllib.request
web=urllib.request.urlopen('ftp://pubftp.spp.org/Markets/RTBM/LMP_By_SETTLEMENT_LOC/2015/05/05/')
filelist=web.read().decode('utf-8').split('\r\n')

但这并不是

filelist=urllib.request.urlopen('ftp://pubftp.spp.org/Markets/RTBM/LMP_By_SETTLEMENT_LOC/2015/05/05/').read().decode('utf-8').split('\r\n')`

具体来说,它只是挂起,我必须取消命令或它返回一个列表,其中项目0是一个空字符串

如果我做了

,就会发生另一种奇怪的行为
web=urllib.request.urlopen('ftp://pubftp.spp.org/Markets/RTBM/LMP_By_SETTLEMENT_LOC/2015/05/05/')
web.read() #dumps all the contents as expected
web.read() #now just displays b''

我猜这两行行为是相关的,read()由于某种原因改变了基础对象。

显然,只使用以前的语法很容易,但我确定如果我不知道将来会发生什么事情,这将会让我想起未来的其他东西。上。

0 个答案:

没有答案