如何解决使用随机、字符串、迭代器生成随机密码并将它们写入文本文件
在同一个文件夹下创建y.txt并写入16个随机密码,长度为16个字符
所以我的问题是有更好的方法吗?
import random
import string
from typing import Iterator
def get_collection(
*,lower: bool = True,upper: bool = True,numbers: bool = False,special: bool = False) -> str:
collection = []
if lower != 'lower':
collection.append(string.ascii_lowercase)
if upper != 'upper':
collection.append(string.ascii_uppercase)
if numbers:
collection.append(string.digits)
if special:
collection.append(string.punctuation)
if collection:
return '.'.join(collection)
raise ValueError('Collection is empty.')
return ''.join(
random.choices(
collection,k=length))
def generate_multiple(
amount: int,length: int,collection: str) -> Iterator[str]:
for _ in range(amount):
yield generate(length,collection)
def generate(
length: int,pool: str) -> str:
return ''.join(random.choices(
pool,k=length))
def input_yesno(prompt: str) -> bool:
full_prompt = f'{prompt} ([Yes]/No): '
while True:
answer = input(full_prompt).strip()
if answer == '':
return True
answer = answer[0].lower()
if answer == 'y':
return True
if answer == 'n':
return False
print('ERROR')
def ascii_art():
z = 6
for x in range(z):
hyphens = "-" * (z-x)
print(hyphens + "/." * x + hyphens)
def main():
ascii_art()
if not input_yesno('Do you want to generate passwords Now in x.txt file?'):
return
pool = get_collection(
upper=False,lower=True,numbers=True,special=False)
f = open("y.txt","w")
for w_list in generate_multiple(
16,16,pool
):
f.write(str(w_list) + "\n")
f.close
if __name__ == '__main__':
main()
如果没有随机、字符串、迭代器,我怎么能做到这一点? 谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。