numpy.savetxt перезапишет исходный файл

#python #python-3.x #numpy

#python #python-3.x #numpy

Вопрос:

Например, в приведенном ниже коде B перезапишет данные A, а C перезапишет данные B.

np.savetxt

 A = tf.constant([[1, 2, 3, 4]], tf.float32)
B = tf.constant([[10, 20, 30, 40]], tf.float32)
C = tf.constant([[11, 22, 33, 44]], tf.float32)
    
np.savetxt("foo.csv", A, fmt="%d")
np.savetxt("foo.csv", B, fmt="%d")
np.savetxt("foo.csv", C, fmt="%d")
  

Я хочу, чтобы данные добавлялись непосредственно в следующую строку каждый раз, когда я ее запускаю.

Ответ №1:

Использование имени файла будет создавать файл заново каждый раз — у вас есть больше контроля над временем жизни файлов, предоставляя вместо этого дескриптор файла:

 import numpy as np

A = np.array([[1, 2, 3, 4]], np.float32)
B = np.array([[10, 20, 30, 40]], np.float32)
C = np.array([[100, 200, 300, 400]], np.float32)

# open by creating new file and append to it
with open("foo.csv","w") as f:
    np.savetxt(f, A, fmt="%d")
    np.savetxt(f, B, fmt="%d")

# reopen and append to it
with open("foo.csv","a") as f:
    np.savetxt(f, C, fmt="%d")


print(open("foo.csv").read())
  

Вывод:

 1 2 3 4
10 20 30 40
100 200 300 400
  

Doku: np.savetxt

numpy.savetxt(fname, X, fmt=’%.18e’, разделитель =’ ‘, перевод строки = ‘n’, заголовок =», нижний колонтитул =», комментарии = ‘# ‘, кодировка = Нет)

fname: имя файла или дескриптор файла