将循环中的每一行写入csv文件中的行

时间:2017-02-16 14:42:26

标签: python python-2.7

我还在学习python,所以如果这很简单,请耐心等待。所以我有这段代码从csv文件中导入一行作为numpy数组,并从该数组的列表中减去每个元素。然后将这些结果数组保存为csv文件中的行:

编辑:我已使用以下内容更新了代码,但仍然获得了与csv文件相同的输出。

from pylab import *
import numpy as np
import matplotlib.pyplot as plt
import csv
from operator import sub

csvfile = open('blackbody.csv')
csvFileArray = []
for row in csv.reader(csvfile):
    csvFileArray.append(row)
x=np.array(map(float, (csvFileArray[1])))
x_1=np.delete(x, 0)
y=np.array([1,2,3,4,5,6,7])
for i in range(0,7):
    z = x_1 - y[i]
    print z
    with open('mags.csv', 'wb') as csvfile:
        file = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
        file.writerow(z)

这给了我以下输出,但只将最后一个数组保存为csv文件中的一行,因为之前的数组已被覆盖:

[9.81 9.09 8.88 8.78 8.62 8.68 8.84]

[8.81 8.09 7.88 7.78 7.62 7.68 7.84]

[7.81 7.09 6.88 6.78 6.62 6.68 6.84]

[6.81 6.09 5.88 5.78 5.62 5.68 5.84]

[5.81 5.09 4.88 4.78 4.62 4.68 4.84]

[4.81 4.09 3.88 3.78 3.62 3.68 3.84]

[3.81 3.09 2.88 2.78 2.62 2.68 2.84]

但我想要的是基本上将所有上述内容保存为csv文件中的行。你怎么能这样做?

另外,如果我想在原始csv文件中为接下来的4行重复上述过程作为循环,那么基本上将1更改为i(其中i = 1/2/3/4/5)上面的代码:

x=np.array(map(float, (csvFileArray[i])))

在我们之前保存的第一行的输出之后,将所有这些行的输出保存到同一个csv文件的简单方法是什么?

非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

创建一个新的.csv文件(' output.csv')并使用csv.writer()(您拥有np.savetxt())的每次计算后将新行写入新文件。完成后,您可以关闭文件并读取新的csv文件,以处理您创建的各个行。

确保打开文件,编写器外部循环(与读取文件一样)。在循环内部将每行写入文件。完成处理完所有数据后,关闭文件 。如果你在循环中打开文件,你将最终覆盖该文件。

CSV File Reading and Writing