Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向文本文件中的现有列添加值(使用Python)_Python - Fatal编程技术网

如何向文本文件中的现有列添加值(使用Python)

如何向文本文件中的现有列添加值(使用Python),python,Python,目前,每次在Python上运行程序时,我都会生成8个随机值。这8个值在我每次运行程序时都是不同的,现在我希望能够在我每次运行程序时将这8个值保存到8个单独列中的文本文件中。但是,在为将来的运行保存这些值时,我希望仍然能够保留以前的值。例如:运行1后,文本文件将为8x1,运行2后,文本文件将为8x2,运行n后,文本文件将为8xn 我一直在寻找这样的解决方案: 使用“a”而不是“w”似乎会附加我的新值,而不是覆盖以前的值。我一直在尝试遵循有关该方法的文档。write,但不太明白如何使用该方法写入特定

目前,每次在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:”标题是每一列的标题。

如何

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次后,您将获得文件内容

12345678
12345678
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)。谢谢你的帮助!