我试图在使用 BeautifulSoup 解析和操作之前确定 python 中下载文件的大小。(我打算很快更新到 ElementTree,但在短暂使用过它之后,它并没有解决我在这里提出的问题,据我所知)。
import urllib2, BeautifulSoup
query = 'http://myexample.file.com/file.xml'
f = urllib2.urlopen(query)
print len(f.read())
soup = BeautifulSoup.BeautifulStoneSoup(f.read())
此代码步履蹒跚,因为当我read()
第一次在 中的文件时len()
,它自然会到达 EOF,因此当我想用 BeautifulSoup 访问它时,文件对象是空的。
我最初的想法是简单地用fcopy = f
一行复制对象,但这让我了解到我只是在引用底层对象而一无所获。
然后我认为这fcopy = copy.copy(f)
会创建对象的真实副本,但显然不是读取 f 仍然导致 fcopy 是一个空文件对象。
我什至读过关于将对象作为参数传递给函数以解决这个问题,并尝试了以下代码
import urllib2, BeautifulSoup
def get_bytes(file):
return len(file.read())
query = 'http://myexample.file.com/file.xml'
f = urllib2.urlopen(query)
print(get_bytes(f))
soup = BeautifulSoup.BeautifulStoneSoup(f.read())
但我有同样的问题。如何在不有效破坏文件的情况下确定该对象的文件大小?