python - 写入变量然后写入文件还是直接写入文件?

标签 python python-2.7

我有以下代码:

foo = json.loads(get_foo())

foo_file = ''
for f in foo['datas']:
    foo_file += f['bar'] + ' ' + f['barfoo'] + '\n'

with open(output, 'w') as output:
    output.write(foo_file)

这是正确的方法吗,还是我应该像这样直接写入文件:

foo = json.loads(get_foo())

with open(output, 'w') as output:
    for f in foo['datas']:
        output.write(f['bar'] + ' ' + f['barfoo'] + '\n')

有一个变量较少使用,但文件打开的时间更长。是不是数据很多,直接写入文件对性能不是很差吗?

最佳答案

通常,当您直接(以代码)写入文件时,系统不会立即写入文件:它将使用操作系统 (OS) 关于缓冲的策略:在内部它是第一个存储在内存中,只有当要写入的内容量超过一定阈值时,才会写入文件。

当使用open时您还可以指定缓冲

但是回到你的问题:我认为性能差异不会那么大,而且并不总是可以首先将所有内容存储在变量中:假设你想写一个 1 TiB 文件,您无法将内容完全存储在内存中。

最后注意,最好使用.join和字符串格式化来提高字符串构造的效率。这:

foo_file = ''
for f in foo['datas']:
    foo_file += f['bar'] + ' ' + f['barfoo'] + '\n'

可以替换为:

foo_file = ''.join('%s %s\n'%(f['bar'],f['barfoo']) for f in foo['datas'])

关于python - 写入变量然后写入文件还是直接写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41633088/

相关文章:

带有动态键的 Python 字符串格式会抛出 KeyError

python - 在 OpenCV 中更改像素值后,图像沿对角轴反射

python - Django Taggit - 属性错误 : can't set attribute

python-2.7 - 如何找到嵌套元组的维度?

python - 如何阅读此 python 代码?变量 1 = 变量 2 == 变量 3

Python asyncio任务列表生成而不执行函数

firefox - 安装 Firefox Addon SDK Python 时出错

Python > 将 help() 输出保存到格式化的 html 文件?

python - 函数不返回值(Python 2.7)

python-2.7 - 将具有字典属性的 JSON 写入 Google Cloud Datastore