将多个字符写入文件,但只看到一个字符?-python

将多个字符写入文件,但只看到一个字符?-python,python,python-3.x,Python,Python 3.x,我想写一到零之间的随机数,八十次。 这应该写0101000010100101001010100101010。。。。不管是什么(80次)进入一个txt文件,但我得到一个单一的数字。为什么 from random import random bro = int(input('Amount: ')) for i in range(bro): open('e.txt', 'w').write(str(round(random()))) 不工作?在for循环中执行open('e.txt','

我想写一到零之间的随机数,八十次。 这应该写0101000010100101001010100101010。。。。不管是什么(80次)进入一个txt文件,但我得到一个单一的数字。为什么

from random import random

bro = int(input('Amount: '))

for i in range(bro):
    open('e.txt', 'w').write(str(round(random())))
不工作?

for
循环中执行
open('e.txt','w')
,意味着您在每次迭代中都要重新创建文件(即,清除它可能包含的任何内容)


因此,当程序完成时,该文件将只保存写入其中的最后一段数据。

您应该打开该文件一次,然后写入打开的文件。您还可以使用
randint(0,1)
代替
round(random())


谢谢你为什么会这样。但仍然需要如何修复它:l@UnknownBobby:见另一个答案;您需要使用
a+
而不是
w
AFAIK。在循环中打开文件是个问题;不是模式。在for循环之前只需打开文件一次。@UnknownBobby:啊,是的,请参见上面的注释。我的回答确实给了你完整的答案。您可以在循环之前
打开('e.txt','w')
一次,就这样。无需更改
'w'
模式。每次写入都重新打开同一文件是浪费。您应该做的是首先打开它,运行
for
循环,然后调用
close()
打开('e.txt',w')打开
e.txt
进行写入,如果该文件中有任何内容,则删除内容。
from random import randint

amnt = 80

with open('e.txt', 'w') as f:
    for i in range(amnt):
        f.write(str(randint(0, 1)))