将所有输出写入文件(Python)

时间:2014-10-13 02:00:52

标签: python passwords output cracking

我有这个代码,它应该生成所有可能的数字组合,并将它们存储在一个名为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()

有人可以解释我该怎么办?

3 个答案:

答案 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在这里处理所有事情......