如何隐藏raw_input中用户的输入内容?附Python代码需求
实现输入隐藏+自定义编码存储的Python程序
嘿,我完全懂你想要做的事——打造一个26字符密码的编码工具,用户输入时看不到明文,按下回车后才展示编码后的内容,还要把这些编码结果写入文本文件对吧?我来给你一步步搞定这个需求。
首先,你原来的代码用raw_input获取输入,默认是明文显示的,要实现输入隐藏,Python标准库的getpass模块刚好能解决这个问题,它的getpass函数会在用户输入时完全隐藏内容(连星号都不会显示)。
然后是编码部分,你提到要生成a = 2、c = 6这种格式,我给你两种实用方案:一种是按字母在字母表的位置自动生成编码,另一种是完全自定义映射规则(按你想要的对应关系来)。
完整代码示例(自动按字母位置编码)
import getpass try: # 获取隐藏的用户输入,自动转成小写 user_input = getpass.getpass("请输入26字符密码语句: ").lower() if not user_input.strip(): print("输入不能为空哦!") exit() # 生成编码内容:a对应1,b对应2,以此类推(如果要a=2,把+1改成+2就行) encoded_lines = [] for char in user_input: if char.isalpha(): # 计算字母在字母表的位置 char_position = ord(char) - ord('a') + 1 encoded_lines.append(f"{char} = {char_position}") # 如果需要处理非字母字符,可以在这里加逻辑,比如跳过或者自定义编码 # 获取文件名并拼接后缀 file_name = raw_input("请输入文件名: ") full_file_path = f"{file_name}.txt" # 用with语句写入文件,自动关闭,更安全 with open(full_file_path, 'a') as file_handler: file_handler.write('\n'.join(encoded_lines) + '\n') # 回车后展示编码后的内容 print("\n编码完成!内容如下:") print('\n'.join(encoded_lines)) except IOError as e: print(f"写入文件失败啦: {e}") except Exception as e: print(f"哎呀,出了点小问题: {e}")
如果需要自定义编码映射(比如a=2、c=6这种特定规则)
把上面的编码部分改成下面这样就行,你可以自己补充所有字符的映射关系:
# 自定义编码映射表,你可以随意修改对应关系 custom_code_map = { 'a': 2, 'b': 3, 'c': 6, # 继续补充d-z的映射... } encoded_lines = [] for char in user_input: if char in custom_code_map: encoded_lines.append(f"{char} = {custom_code_map[char]}") # 对于不在映射里的字符,你可以选择跳过或者提示用户
关键要点说明
- 输入隐藏:
getpass.getpass()是核心,它会在用户输入时不显示任何内容,完美符合你“按下回车前隐藏输入”的需求。 - 文件安全写入:用
with语句管理文件,不用手动调用close(),能避免忘记关闭文件导致的资源泄漏问题。 - 异常处理:捕获了文件写入的错误和其他未知错误,让程序不会轻易崩溃,还能给出友好的提示。
内容的提问来源于stack exchange,提问作者Barry
相关产品推荐
相关产品推荐

