python3-numpy:仅当文件是带有 numpy savetxt 的新文件时才写入 header
python3-numpy: Write header only if file is new with numpy savetxt
我使用类似于下面的 mwe 的 numpy.savetxt 多次将行附加到输出文件。但是,我只想将 header 写入文件一次,即如果它之前不存在。除了每次附加到文件时检查它是否已经存在之外,是否有更简单的方法来实现此目的?
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
def write(array):
with open('test.dat', 'ab') as f:
np.savetxt(f, array, header='test header')
write([1, 2, 3])
write([4, 5, 6])
输出(test.dat):
# test header
1.000000000000000000e+00
2.000000000000000000e+00
3.000000000000000000e+00
# test header
4.000000000000000000e+00
5.000000000000000000e+00
6.000000000000000000e+00
我只想要文件顶部的 header 行而不是此输出。
我会这样做:
import numpy as np
import os
def write(array):
header = '' # set empty header
if not os.path.isfile('test.dat'): # checks if the file exists
header = 'Test header' # if it doesn't then add the header
with open('test.dat', 'ab') as f:
np.savetxt(f, array, header=header)
write([1, 2, 3])
write([4, 5, 6])
如果不想每次写入文件时都检查文件是否存在,可以采用一种解决方法:
每当您写入文件时,**不要*完全写入 header。仅当您完成 所有 写入操作后,才在文件开头插入 header。
Here 是解释如何操作的 SO 答案。
我使用类似于下面的 mwe 的 numpy.savetxt 多次将行附加到输出文件。但是,我只想将 header 写入文件一次,即如果它之前不存在。除了每次附加到文件时检查它是否已经存在之外,是否有更简单的方法来实现此目的?
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
def write(array):
with open('test.dat', 'ab') as f:
np.savetxt(f, array, header='test header')
write([1, 2, 3])
write([4, 5, 6])
输出(test.dat):
# test header
1.000000000000000000e+00
2.000000000000000000e+00
3.000000000000000000e+00
# test header
4.000000000000000000e+00
5.000000000000000000e+00
6.000000000000000000e+00
我只想要文件顶部的 header 行而不是此输出。
我会这样做:
import numpy as np
import os
def write(array):
header = '' # set empty header
if not os.path.isfile('test.dat'): # checks if the file exists
header = 'Test header' # if it doesn't then add the header
with open('test.dat', 'ab') as f:
np.savetxt(f, array, header=header)
write([1, 2, 3])
write([4, 5, 6])
如果不想每次写入文件时都检查文件是否存在,可以采用一种解决方法:
每当您写入文件时,**不要*完全写入 header。仅当您完成 所有 写入操作后,才在文件开头插入 header。
Here 是解释如何操作的 SO 答案。