生成密码列表时出现内存错误
Memory error occurring when generating a list of passwords
我正在尝试生成所有可能的密码,长度在 1-5 个字符之间,其中可能的字符是小写字母、大写字母和 10 个数字。
为了简单起见,我将可能的字符限制为小写字母和十位数字,密码长度限制为 3-5 个字符。
import itertools
charMix = list("abcdefghijklmnopqrstuvwxyz1234567890")
mix = []
for length in range(3, 6):
temp = [''.join(p) for p in itertools.product(charMix, repeat=length)]
mix.append(temp)
但是,我 运行 在 temp
赋值行遇到内存错误,不知道如何克服它们 :(
有没有一种方法可以在不出现内存错误的情况下生成这些密码?
由于您实际上提到了术语 generate,请考虑在此处使用 generator,如果这将满足您的用例:
from typing import Generator
import itertools
def make_pws(join="".join) -> Generator[str, None, None]:
charMix = "abcdefghijklmnopqrstuvwxyz1234567890"
for length in range(3, 6):
for p in itertools.product(charMix, repeat=length):
yield join(p)
您可以像序列一样遍历此结果,而无需将整个内容放入内存:
>>> pws = make_pws()
>>> next(pws)
'aaa'
>>> next(pws)
'aab'
>>> next(pws)
'aac'
>>> next(pws)
'aad'
>>> for pw in make_pws():
... # process each one at a time
我正在尝试生成所有可能的密码,长度在 1-5 个字符之间,其中可能的字符是小写字母、大写字母和 10 个数字。
为了简单起见,我将可能的字符限制为小写字母和十位数字,密码长度限制为 3-5 个字符。
import itertools
charMix = list("abcdefghijklmnopqrstuvwxyz1234567890")
mix = []
for length in range(3, 6):
temp = [''.join(p) for p in itertools.product(charMix, repeat=length)]
mix.append(temp)
但是,我 运行 在 temp
赋值行遇到内存错误,不知道如何克服它们 :(
有没有一种方法可以在不出现内存错误的情况下生成这些密码?
由于您实际上提到了术语 generate,请考虑在此处使用 generator,如果这将满足您的用例:
from typing import Generator
import itertools
def make_pws(join="".join) -> Generator[str, None, None]:
charMix = "abcdefghijklmnopqrstuvwxyz1234567890"
for length in range(3, 6):
for p in itertools.product(charMix, repeat=length):
yield join(p)
您可以像序列一样遍历此结果,而无需将整个内容放入内存:
>>> pws = make_pws()
>>> next(pws)
'aaa'
>>> next(pws)
'aab'
>>> next(pws)
'aac'
>>> next(pws)
'aad'
>>> for pw in make_pws():
... # process each one at a time