我每次在Python上运行程序时都会生成8个随机值。每次运行程序时,这8个值都不同,我希望每次将程序运行到8个单独的列中的文本文件时,可以保存这8个值。但是,为将来的运行保存这些值时,我仍希望能够保留以前的值。例如:运行1后,文本文件为8x1,运行2后,文本文件为8x2,运行n后,文本文件为8xn。
我一直在寻找这样的解决方案:save output values in txt file in columns python
似乎正在使用' a'相反' w'将追加我的新值而不是覆盖以前的值。我一直在尝试按照.write方法的文档进行操作,但是我不太清楚如何使用此方法写入特定列。我能够简单地在每个列中写入自己的文本文件,但是我能够在同一个文本文件中将列一起编写,以便将来运行此程序。
编辑:我的输出将是8个浮点数并重申,它们每次都是随机的。
因此,运行1次后,我将创建8个浮点值:Run11,Run12,Run13,Run14,Run15,Run16,Run17,Run18。在我第二次运行后,我将创建另一组值(长度为8个条目):Run21,Run22,Run23,Run24,Run25,Run26,Run27,Run28。
在文本文件中,我希望将这些值放在特定的列中,如下所示:http://imgur.com/zxoxaKM(这是2次运行后的样子)。 "价值n:"标题是每列的标题。
答案 0 :(得分:1)
import csv
from tempfile import NamedTemporaryFile
from shutil import move
from itertools import chain
with open("in.csv") as f, NamedTemporaryFile(dir=".", delete=False) as temp:
r = csv.reader(f)
new = [9, 10, 11, 12, 13, 14, 15, 16]
wr = csv.writer(temp)
wr.writerows(zip(chain.from_iterable(r), new))
move(temp.name, "in.csv")
输入:
1
2
3
4
5
6
7
8
输出:
1,9
2,10
3,11
4,12
5,13
6,14
7,15
8,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")
输入:
Value 1:
1
2
3
4
5
6
7
8
输出:
Value 1:,Value 2:
1,9
2,10
3,11
4,12
5,13
6,14
7,15
8,16
如果您要为每个领带而不是列添加实际行,则只需添加:
with open("in.csv","a") as f:
new = [9, 10, 11, 12, 13, 14, 15, 16]
wr = csv.writer(f)
wr.writerow(new)
输入:
value 1:,value 2:,value 3:,value 4:,value 5:,value 6:,value 7:,value 8:
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
9,10,11,12,13,14,15,16
答案 1 :(得分:-1)
怎么样
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次后获得文件内容
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
=======编辑=========
试试这个,它的丑陋但有效; - )
import os.path
h = ['Header 1', 'Hea 2', 'Header 3', 'Header 4', 'H 5', 'Header', 'Header 7', 'Header 8']
a = [1, 2, 3, 4, 5, 6, 7, 8]
fileName = 'myFile.txt'
#write header
withHeader = not os.path.isfile(fileName)
f = open(fileName, 'a')
if withHeader:
print 'Writing header'
for s in h:
f.write('%s\t'%s)
f.write('\n')
#write numbers
for i in range(0, len(a)):
space = len(h[i])/2;
n = a[i]
for c in range(0, space):
f.write(' ')
print 'Writing %d'%n
f.write('%d'%n)
for c in range(0, space):
f.write(' ')
f.write('\t')
f.write('\n')
f.close()
结果:
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