python - 为什么 tempfile.NamedTemporaryFile() 会截断我的数据?

标签 python

这是我创建的一个测试,用于重现我在使用时遇到的问题 临时文件.NamedTemporaryFile()。问题是当我使用 tempfile 时 我的 CSV 中的数据从文件末尾被截断。

当您运行此测试脚本时,temp2.​​csv 将被截断,而 temp1.csv 将与原始 CSV 的大小相同。

我正在使用 Python 2.7.1。

您可以从 http://explore.data.gov/Energy-and-Utilities/Residential-Energy-Consumption-Survey-RECS-Files-A/eypy-jxs2 下载示例 CSV

#!/usr/bin/env python

import tempfile
import shutil


def main():
    f = open('RECS05alldata.csv')
    data = f.read()
    f.close()

    f = open('temp1.csv', 'w+b')
    f.write(data)
    f.close()

    temp = tempfile.NamedTemporaryFile()
    temp.write(data)
    shutil.copy(temp.name, 'temp2.csv')
    temp.close()

if __name__ == '__main__':
    main()

最佳答案

在 temp.write(data) 之后添加 temp.flush()。

关于python - 为什么 tempfile.NamedTemporaryFile() 会截断我的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422478/

相关文章:

Python:导入 pydoc 然后在本地使用它?

python - 在 Python 中的列表中混洗列表的有效方法

dict() 或函数参数中的 Python 多行注释

python - 如何从带日期的字符串列表中过滤掉字符串?

python - 如何从递归函数转换为非递归函数?

python - 如何在 dataframe python 中创建累计和?

python - DLR 与性能

python - 了解 numpy.r_() 串联的语法

python - python列表类型转换

python - findall 的完整表达式