Python 在脚本执行期间将值写入csv

Python 在脚本执行期间将值写入csv,python,Python,我有一个简单的脚本,它从一个csv读取值,对它们运行一些内部函数,每次需要2-3秒,然后将结果写入另一个csv文件 这是它的样子,减去我引用的内部函数 import csv import time pause = 3 with open('input.csv', mode='r') as input_file, \ open('output.csv', mode='w') as output_file: input_reader = csv.DictReader(input

我有一个简单的脚本,它从一个csv读取值,对它们运行一些内部函数,每次需要2-3秒,然后将结果写入另一个csv文件

这是它的样子,减去我引用的内部函数

import csv
import time

pause = 3

with open('input.csv', mode='r') as input_file, \
     open('output.csv', mode='w') as output_file:
    input_reader = csv.DictReader(input_file)
    output_writer = csv.writer(output_file, delimiter=',', quotechar='"',
                               quoting=csv.QUOTE_MINIMAL)
    count = 1
    for row in input_reader:
        row['new_value'] = "result from function that takes time"
        output_writer.writerow( row.values() )
        print( 'Processed row: ' + str( count ) )
        count = count + 1
        time.sleep(pause)
我面临的问题是,
output.csv
文件保持空白,直到所有内容都完成执行

当这个长脚本运行时,我想在其他地方访问和使用该文件

是否有办法防止延迟将值写入
输出.csv

编辑:这是上面脚本的虚拟csv文件:

值
43t34t34t
4r245r243
2q352q352
格格默格尔
435q345q35

我想您应该看看这个选项——它控制Python刷新文件的频率

具体地说,设置
open('name','wb',buffering=0)
会将缓冲减少到最小,但您可能希望将其设置为其他有意义的设置

缓冲是用于设置缓冲策略的可选整数。 传递0以关闭缓冲(仅在二进制模式下允许),传递1至 选择行缓冲(仅在文本模式下可用),然后选择一个大于1的整数 以字节为单位指示固定大小区块缓冲区的大小。当没有 如果给定缓冲参数,则默认缓冲策略的作用如下 如下:

  • 二进制文件缓冲在固定大小的块中;缓冲区的大小是使用一种启发式方法来选择的,该方法试图确定底层缓冲区的大小 设备的“块大小”和返回io.DEFAULT\U BUFFER\U大小。在…上 在许多系统中,缓冲区通常为4096或8192字节长
  • “交互式”文本文件(isatty()返回True的文件)使用行缓冲。其他文本文件使用上述策略 对于二进制文件

另请参见。

您是否想过创建一个字符串对象,将其附加(写入)新行,然后将其写入文件?在
输出写入器之后放置一个
输出文件.flush()
。writerow()
调用可能会奏效。