gpt4 book ai didi

python - 在 Linux 中复制 NamedTemporaryFile 会导致文件为空

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:38 24 4
gpt4 key购买 nike

我正在 Ubuntu 16.04 下的 Python 3 中将一些内容写入 tempfile.NamedTemporaryFile。在某些情况下,我想在写入完成后将该文件复制到其他位置。使用以下代码重现该问题:

import tempfile
import shutil

with tempfile.NamedTemporaryFile('w+t') as tmp_file:
print('Hello, world', file=tmp_file)
shutil.copy2(tmp_file.name, 'mytest.txt')

mytest.txt 执行结束后为空。如果我在创建 NamedTemporaryFile 时使用 delete=False,我可以在 /tmp/ 中检查它的内容,它们没问题。

我知道根据文档在 Windows 下打开文件时无法再次打开该文件,但 Linux 应该没问题,所以我不希望它是那样。

发生了什么,如何解决?

最佳答案

问题是 print() 调用没有被刷新,所以当文件被复制时,还没有写入任何内容。

使用 flush=True 作为 print() 的参数修复了这个问题:

import tempfile
import shutil

with tempfile.NamedTemporaryFile('w+t') as tmp_file:
print('Hello, world', file=tmp_file, flush=True)
shutil.copy2(tmp_file.name, 'mytest.txt')

关于python - 在 Linux 中复制 NamedTemporaryFile 会导致文件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47815594/

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