如何向文本文件中的现有列添加值(使用Python)
目前,每次在Python上运行程序时,我都会生成8个随机值。这8个值在我每次运行程序时都是不同的,现在我希望能够在我每次运行程序时将这8个值保存到8个单独列中的文本文件中。但是,在为将来的运行保存这些值时,我希望仍然能够保留以前的值。例如:运行1后,文本文件将为8x1,运行2后,文本文件将为8x2,运行n后,文本文件将为8xn 我一直在寻找这样的解决方案: 使用“a”而不是“w”似乎会附加我的新值,而不是覆盖以前的值。我一直在尝试遵循有关该方法的文档。write,但不太明白如何使用该方法写入特定列。我已经能够简单地将每一列写入它自己的文本文件中,但是我更希望能够将这些列一起写入同一个文本文件中,以便将来使用这个程序运行 编辑:我的输出将是8个浮点数,重申一下,它们每次都是随机的 所以在运行1次之后,我将创建8个浮点值:Run11、Run12、Run13、Run14、Run15、Run16、Run17、Run18。在第二次运行之后,我将创建另一组值(8个条目长):Run21、Run22、Run23、Run24、Run25、Run26、Run27、Run28 在文本文件中,我希望将这些值放在如下特定列中:(这是运行2次后的结果)。 “Value n:”标题是每一列的标题。如何如何向文本文件中的现有列添加值(使用Python),python,Python,目前,每次在Python上运行程序时,我都会生成8个随机值。这8个值在我每次运行程序时都是不同的,现在我希望能够在我每次运行程序时将这8个值保存到8个单独列中的文本文件中。但是,在为将来的运行保存这些值时,我希望仍然能够保留以前的值。例如:运行1后,文本文件将为8x1,运行2后,文本文件将为8x2,运行n后,文本文件将为8xn 我一直在寻找这样的解决方案: 使用“a”而不是“w”似乎会附加我的新值,而不是覆盖以前的值。我一直在尝试遵循有关该方法的文档。write,但不太明白如何使用该方法写入特定
a = [1, 2, 3, 4, 5, 6, 7, 8]
f = open('myFile.txt', 'a')
for n in a:
f.write('%d\t'%n)
f.write('\n')
f.close()
运行4次后,您将获得文件内容
1234567812345678
12345678
12345678 =======编辑========= 试试这个,它很难看,但很管用;-) 结果:
Header 1 Hea 2 Header 3 Header 4 H 5 Header Header 7 Header 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
输入:
1
2
3
4
5
6
7
8
Value 1:
1
2
3
4
5
6
7
8
value 1:,value 2:,value 3:,value 4:,value 5:,value 6:,value 7:,value 8:
1,2,3,4,5,6,7,8
输出:
1,9
2,10
3,11
4,12
5,13
6,14
7,15
8,16
Value 1:,Value 2:
1,9
2,10
3,11
4,12
5,13
6,14
7,15
8,16
value 1:,value 2:,value 3:,value 4:,value 5:,value 6:,value 7:,value 8:
1,2,3,4,5,6,7,8
9,10,11,12,13,14,15,16
要将标题考虑在内,请执行以下操作:
with open("in.csv") as f, NamedTemporaryFile(dir=".", delete=False) as temp:
r = csv.reader(f)
header = next(r)
new = [9, 10, 11, 12, 13, 14, 15, 16]
wr = csv.writer(temp)
wr.writerow(header+["Value {}:".format(len(header)+1)])
wr.writerows(zip(chain.from_iterable(r), new))
move(temp.name, "in.csv")
输入:
1
2
3
4
5
6
7
8
Value 1:
1
2
3
4
5
6
7
8
value 1:,value 2:,value 3:,value 4:,value 5:,value 6:,value 7:,value 8:
1,2,3,4,5,6,7,8
输出:
1,9
2,10
3,11
4,12
5,13
6,14
7,15
8,16
Value 1:,Value 2:
1,9
2,10
3,11
4,12
5,13
6,14
7,15
8,16
value 1:,value 2:,value 3:,value 4:,value 5:,value 6:,value 7:,value 8:
1,2,3,4,5,6,7,8
9,10,11,12,13,14,15,16
如果要为每个tie添加实际行,而不是列,则只需附加:
with open("in.csv","a") as f:
new = [9, 10, 11, 12, 13, 14, 15, 16]
wr = csv.writer(f)
wr.writerow(new)
输入:
1
2
3
4
5
6
7
8
Value 1:
1
2
3
4
5
6
7
8
value 1:,value 2:,value 3:,value 4:,value 5:,value 6:,value 7:,value 8:
1,2,3,4,5,6,7,8
输出:
1,9
2,10
3,11
4,12
5,13
6,14
7,15
8,16
Value 1:,Value 2:
1,9
2,10
3,11
4,12
5,13
6,14
7,15
8,16
value 1:,value 2:,value 3:,value 4:,value 5:,value 6:,value 7:,value 8:
1,2,3,4,5,6,7,8
9,10,11,12,13,14,15,16
你能添加一个输入和预期输出的例子吗?我的输出将是8个浮点数。我将编辑我的主要问题,以包括一个示例。那么你想每次添加一个包含8行的新行吗?@Padraiccanningham:我猜Mathews24只需要一个包含8行的新行。很好。它符合OP的最后一条评论。但不是@PM2Ring中的布局,我实际上是要提到标题,因为我没有看到任何标题,但我将对其进行编辑。是否有一种好方法可以使用此方法为每列包含标题,但仍然能够使用np.loadtxt检索值,并且不让字符串标题干扰@DannyI使用了您最初的示例,为了将来使用这些值,我刚刚做了:Value1、Value2、Value3、Value4、Value5、Value6、Value7、Value8=np.loadtxt(“path”,skiprows=1,unpack=True)。谢谢你的帮助!