在Wordlist Generator程序中添加暂停和继续功能

时间:2018-11-23 13:53:13

标签: python pickle

我正在使用13种字符创建8个字符密码的单词表。
我的代码是:

import itertools
import pickle
import pathlib
import time
from typing import TextIO, Tuple

path = pathlib.Path('backup1.pkl')
if path.exists():
inputfile = open("backup1.pkl", "rb")
val_comb = pickle.load(inputfile)

print( val_comb  )
time.sleep(3)

f: TextIO=open("all_pass_combo_8_(3).txt","w")

res = itertools.product('abcdefghjklm', repeat=8) .
for i in res:
        print( val_comb  )
        f.write(val_comb)
        val_comb = (''.join(i) + "\n")
        output = open("backup1.pkl", 'wb')
        pickle.dump(val_comb, output)

output.close()
inputfile.close()
f.close()

因此,我需要几个小时才能完成代码的执行。但是,问题是我不能长时间打开计算机。而且,如果我在任何情况下都关闭/中断了该过程,则将组合保存到该实例为止,然后,每当我尝试再次运行该执行时,它将从其初始状态开始。

有些前辈告诉我使用“ pickle()”来完成我想要的工作,并提供了“ pickle()项目描述”的正式链接。我阅读了这篇文章,然后跳到YouTube寻求更多帮助。然后,我尝试以您上面可能会看到的格式编辑代码,但是我没有执行我愿意做的事情。

所以,我要做的正是:
我将运行我的程序。它将运行并生成一个单词表。现在,我必须关闭我的电脑。因此,我将不得不终止执行。现在,我想保留(或腌制)我在程序中的进度,当我再次开始执行程序时,它应该从离开程序的同一阶段恢复;例如如果我已在'aaaafhgj'上将其终止。然后,它应该立即从'aaaafhgk'开始加入置换和组合,并且不应重复'aaaaaaaa',依此类推。但是我的代码正在做我不想做的事情。

1 个答案:

答案 0 :(得分:1)

要保存进度,您可以在脚本本身中添加“暂停”,然后保存到文件中。

泡菜的使用示例

import time
import pickle
import os

save_file = "save_file.tmp"

if os.path.exists(save_file):
    with open(save_file, "rb") as in_file:
        try:
            my_array = pickle.loads(in_file.read()) # reload the last operation
        except Exception:
            my_array = []
else:
    my_array = []

while True:
    try:
        time.sleep(1)
        my_array.append("next") # here you can do what you want replace this part
    except KeyboardInterrupt, SystemExit:
        print my_array
        with open(save_file, "wb") as out_file:
            out_file.write(pickle.dumps(my_array))
        input()

希望能对您有所帮助,显然做到这一点并不容易;)