gpt4 book ai didi

python - 写入后无法从 NamedTemporaryFile 中读取

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:59 25 4
gpt4 key购买 nike

我正在尝试将文件下载到临时文件并将该文件发布到另一项服务。我尝试使用 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 block 之外重新打开文件并尝试读取它,它就可以正常工作。我不明白为什么我必须关闭临时文件并重新打开它。

有人可以给我解释一下吗?我是 python 开发的新手。

最佳答案

这里的问题是 readlines() 似乎是从当前文件位置开始读取的。如果您首先查找到临时文件的开头,您将获得这些行。

file.seek(0)
logging.debug(file.readlines())

关于python - 写入后无法从 NamedTemporaryFile 中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22657914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com