pickle和os的作业
#1.写一个函数,接受一个参数,如果是文件就执行这个文件,如果是文件夹,就执行这个文件夹下面所有的文件.
import os
import json,pickle
import random
def judge_py_class(name):#判断是否是可执行文件
if os.path.basename(name).endswith('.py'):
return True
else:
return False
def implement(path):#执行函数
if os.path.isdir(path):#判断路径是否是文档
the_former_address = os.path.split(path)[0]#取前面的绝对地址
for file in path:
if not judge_py_class(file):
pass
else:
abs_path = os.path.join(the_former_address,file)
os.system('python %s'%abs_path)#执行文件
elif os.path.isfile(path):#判断是否是文件
if not judge_py_class(path):
pass
else:
os.system('python %s'%path)
# implement(r'C:UsersAdministratorPycharmProjects全栈学习day19 1os模块.py')
#2.写一个copy函数,接受两个参数,第一个是参数是原文件的位置,第二个参数是目标文件的位置
def copy_func(original_path,copy_path):
lst = []
if os.path.isdir(copy_path):
file_name = os.path.basename(original_path)#取后面的文件名
path2 = os.path.join(copy_path,file_name)
if os.path.exists(path2):#判断路径下是否有同名文件
print('已经有同名文件')
elif os.path.isfile(path2):#判断路径是否是个文件
with open('%s'%original_path,'read') as fr:
for line in fr:
lst.append(line)
with open('%s'%os.path.join(original_path,file_name),'w') as fw:
for line in lst:
fw.write(line)
else:
print('invalid path')
#3.获取某个文件的上级目录
os.path.split(path)[1]
#4.写一个用户注册登陆程序,每一个用户注册都要把用户名和密码以字典形式写入文件,在登陆的时候再进行验证.
#思路1:直接用一个字典存储所有的信息,内存应该是不够的
def the_register_func(username,password):#注册函数
with open('database.dump','rb') as fr:
temporary_dic = pickle.loads(fr.read())#loads将type转换成dict.
if username in temporary_dic.keys():#判断是否存在已知用户名
print('the username now exists')
else:
temporary_dic[username] = password#注册账户
with open('database.dump','wb') as fw:
fw.write(pickle.dumps(temporary_dic))
def log_func(username, password):
with open('database.dump', 'rb') as fr:
temporary_dic = pickle.loads(fr)
if username not in temporary_dic.keys():
print('the username do not exist.')
elif temporary_dic[username] != password:
print('wrong password')
else:
#思路2:分别用单个字典存储信息,循环取出
# {'usr':'alex','pwd':'alex3714'}
import pickle
def register():
usr = input('username :')
pwd = input('password : ')
dic = {usr:pwd}
with open('userinfo','ab') as f:
pickle.dump(dic,f)
print('注册成功')
def login():
flag = True
usr = input('username :')
pwd = input('password : ')
with open('userinfo', 'rb') as f:
while flag:
try :#这样可能做成迭代器会省内存点
dic = pickle.load(f)
for k,v in dic.items():
if k == usr and pwd == v:
print('登录成功')
flag = False
break
except EOFError:
print('登录失败')
break