[英]how to get headers from urllib2.read() written in django's NamedTemporaryFile?
[英]Can't read from NamedTemporaryFile after being written
我正在嘗試將文件下載到臨時文件,然后將此文件發布到其他服務。 我使用NamedTemporaryFile嘗試過此操作,但是我被迫關閉文件並重新打開它。
def main():
validate()
logging.basicConfig(filename=sys.argv[2]+".log", level=logging.INFO)
if(sys.argv[3][0:4] == "http"):
filename = None
with tempfile.NamedTemporaryFile("w+b", delete=False) as file:
download(file, sys.argv[3])
#this logging prints nothing
logging.debug(file.readlines())
else:
#this else just process a local file...
def download(file, url):
logging.info("Downloading file " + sys.argv[3] + "...")
start = time.time() * 1000
r = requests.get(sys.argv[3], stream=True, timeout=2.0)
#just a dummy check....
if r.status_code == 200:
for chunk in r.iter_content():
file.write(chunk)
file.flush()
else:
logging.error("Server returned an error")
raise StandardError
如果我在with塊外重新打開該文件並嘗試讀取該文件,則該文件可以正常工作。 我不明白為什么我必須關閉臨時文件然后重新打開它。
有人可以給我一個解釋嗎? 我是python開發人員中的新手。
這里的問題是readlines()似乎是從當前文件位置開始讀取的。 如果您首先尋求臨時文件的開始,那么您將獲得這些行。
file.seek(0)
logging.debug(file.readlines())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.