将多个字符写入文件,但只看到一个字符?-python
我想写一到零之间的随机数,八十次。 这应该写0101000010100101001010100101010。。。。不管是什么(80次)进入一个txt文件,但我得到一个单一的数字。为什么将多个字符写入文件,但只看到一个字符?-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','
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)))