我有这个代码,它应该生成所有可能的数字组合,并将它们存储在一个名为Passwords4.txt的文本文件中。这里的问题是,当我转到文本文件时,它只显示9999而不是显示从0000到9999的数字。
import itertools
lst = itertools.product('0123456789', repeat=4) #Last part is equal to the password lenght
for i in lst:
print ''.join(i)
f = open('Passwords4.txt', 'w')
f.write(str(''.join(i)) +'\n')
f.close()
有人可以解释我该怎么办?
答案 0 :(得分:1)
你的f.write
不在循环中,所以它只发生一次。
你可能想要循环前的open()
和循环中的f.write(缩进,与print
相同)。
答案 1 :(得分:0)
回复:
for i in lst:
print ''.join(i)
f = open('Passwords4.txt', 'w')
f.write(str(''.join(i)) +'\n')
当你打开文件并在循环结束后写入文件时,i
已经被设置为只是循环的最后结果,这就是为什么你'只获得9999
。
修复是在循环中写,例如:
import itertools
lst = itertools.product('0123456789', repeat=4)
f = open('Passwords4.txt', 'w')
for i in lst:
f.write(''. join(i) + '\n')
f.close()
答案 2 :(得分:0)
这是更多Pythonic的做法:
import itertools
lst = itertools.product('0123456789', repeat=4) #Last part is equal to the password lenght
with open('Passwords4.txt', 'w') as f:
for i in lst:
print ''.join(i)
f.write(str(''.join(i)) +'\n')
Python在这里处理所有事情......