微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用随机、字符串、迭代器生成随机密码并将它们写入文本文件

如何解决使用随机、字符串、迭代器生成随机密码并将它们写入文本文件

在同一个文件夹下创建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 举报,一经查实,本站将立刻删除。