我有以下代码:
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/