簡體   English   中英

寫入后無法從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM