Python 仅迭代仅在“打开”开头可用的行
我正在创建一个程序,该程序应该使用给定字符的所有可能组合创建一个文件,并将它们放入一个文件中。当然,它会一直持续下去,直到我停止它,或者直到我的内存耗尽 不过,我的想法是,代码读取文件并迭代这些行,同时生成新行。不过,我不希望它在新行上迭代,因为它正在这样做。有什么帮助吗Python 仅迭代仅在“打开”开头可用的行,python,Python,我正在创建一个程序,该程序应该使用给定字符的所有可能组合创建一个文件,并将它们放入一个文件中。当然,它会一直持续下去,直到我停止它,或者直到我的内存耗尽 不过,我的想法是,代码读取文件并迭代这些行,同时生成新行。不过,我不希望它在新行上迭代,因为它正在这样做。有什么帮助吗 import time, os char_list = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" start_time = time.t
import time, os
char_list = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
start_time = time.time()
password = "aaa"
file_name = "file.txt"
with open(file_name, "w+") as f:
for i in char_list:
f.write(i+"\n")
with open(file_name, "a+") as f:
for x in f:
for i in char_list:
f.write(x[:-1]+i+"\n")
print(x[:-1]+i)
if x[:-1]+i == password:
break
print("%s was found after %ss!"%(password, time.time()-start_time))
input()
为了形成这些组合,我们可以使用函数,它创建了传递给它的iterables的集合。此函数返回一个迭代器,因此您可以循环遍历它生成的元组,而无需将它们存储到列表中 这里有一个小演示,您可以根据自己的目的进行修改
from itertools import product
def all_products(char_list, password):
count = 1
while True:
for t in product(char_list, repeat=count):
s = ''.join(t)
print(s, end=', ')
if s == password:
return
count += 1
all_products('abcdefghijklmnopqrstuvwxyz', 'help')
print()
这个程序非常简单,所以如果你不耐烦地等待它生成一个大的密码,你必须点击CtrlC来杀死它 要形成这些组合,我们可以使用函数,该函数创建您传递的iterables的集合。此函数返回一个迭代器,因此您可以循环遍历它生成的元组,而无需将它们存储到列表中 这里有一个小演示,您可以根据自己的目的进行修改
from itertools import product
def all_products(char_list, password):
count = 1
while True:
for t in product(char_list, repeat=count):
s = ''.join(t)
print(s, end=', ')
if s == password:
return
count += 1
all_products('abcdefghijklmnopqrstuvwxyz', 'help')
print()
这个程序非常简单,所以如果你不耐烦地等待它生成一个大的密码,你必须点击CtrlC来杀死它 你为什么不能把代码放在问题中而不是放在pastebin中?我对它的工作原理不是很熟悉,我现在就试试。你说的任何帮助是什么意思?您的问题/问题到底是什么?您将所有这些字符串写入文件的原因是什么?如果你只是试图创建所有的组合,直到找到一个等于
密码的组合,你就不需要这样做了。顺便说一句,在这个内部循环中创建x[:-1]+i
字符串3次是没有效率的。有什么原因你不能把代码放在问题中而不是放在pastebin中吗?我对它的工作原理不是很熟悉,我现在就试试。你说什么帮助?您的问题/问题到底是什么?您将所有这些字符串写入文件的原因是什么?如果您只是尝试创建所有组合,直到找到一个等于password
的组合,则不需要这样做。顺便说一句,在该内部循环中创建x[:-1]+i
字符串3次是低效的。