三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

IO练习题

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

← 返回列表