IO练习题
1.使用os和os.path以及函数的递归完成:
给出一个路径,遍历当前路径所有的文件及文件夹
import os
def scan_dir(path):
for item in os.listdir(path):
full_path = os.path.join(path, item)
if os.path.isdir(full_path):
scan_dir(full_path)
else:
print(full_path)
if __name__ == '__main__':
target_path = r"./"
scan_dir(target_path)
打印输出所有的文件(遇到文件输出路径,遇到文件夹继续进文件夹)
2.使用加密模块及IO模拟登录功能,要求使用文件模拟数据库存储用户名和密码。
import hashlib
# 加密函数:md5加密明文密码
def pwd_md5(pwd):
md5 = hashlib.md5()
md5.update(pwd.encode("utf-8"))
return md5.hexdigest()
def register(username, password):
md5_pwd = pwd_md5(password)
with open("user.txt", "a", encoding="utf-8") as f:
f.write(f"{username}|{md5_pwd}\n")
print("注册成功")
def login(username, password):
md5_pwd = pwd_md5(password)
try:
with open("user.txt", "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line:
continue
name, pwd = line.split("|")
if name == username and pwd == md5_pwd:
return True
return False
except FileNotFoundError:
print("用户库不存在,请先注册!")
return False
if __name__ == '__main__':
while True:
opt = input("1-注册 2-登录 0-退出:")
if opt == "1":
un = input("用户名:")
pw = input("密码:")
register(un, pw)
elif opt == "2":
un = input("用户名:")
pw = input("密码:")
if login(un, pw):
print("登录成功!")
else:
print("用户名或密码错误!")
elif opt == "0":
break
