day20模块作业

五迷三道 提交于 2020-03-07 07:18:30

1.模块化作业

1.回顾文件递归遍历. 默写一遍.
入口在: 当文件是个文件夹的时候
出口在: 文件是一个文件

2.计算时间差(用户输入起始时间和结束时间. 计算时间差(小时),
例如, 用户输入2018-10-08 12:00:00 2018-10-08 14:30:00 输出2小时

3.写一个函数,接收一个参数,如果是文件,就执行这个文件,如果是文件夹,就执行这个文件夹下的所有的py文件。

4.写一个copy函数,接受两个参数,第一个参数是源文件的位置,第二个参数是目标位置,将源文件copy到目标位置。

5.获取某个文件所在目录的上一级目录。

30分

6.使用os模块创建如下目录结构

# glance
# ├── __init__.py
# ├── api
# │   ├── __init__.py
# │   ├── policy.py
# │   └── versions.py
# ├── cmd
# │   ├── __init__.py
# │   └── manage.py
# └── db
#      ├── __init__.py
#      └── models.py

7.写一个用户注册登陆的程序,每一个用户的注册都要把用户名和密码用字典的格式写入文件userinfo。在登陆的时候,再从文件中读取信息进行验证。

8.使用random模块,编写一个发红包的函数

2.作业详解

点击查看详细内容
  
#1.
import os
def func(path,n=0):
    path_list = os.listdir(path)        #1.打开文件夹,查看当前目录的文件
    for name in path_list:      #2.遍历文件名
        abs_path = os.path.join(path,name)      #3.文件绝对路径
        if os.path.isdir(abs_path):
            print("\t"*n,name,":")
            func(abs_path,n+1)      #递归,n:层数,多一层多一个 "\t"
        else:
            print("\t"*n,name)

ret = func('E:\S15\day1')



#2.
import time
start_time = time.strptime('2018-10-08 12:00:00','%Y-%m-%d %H:%S:%M')
end_time = time.strptime('2018-10-08 14:30:00','%Y-%m-%d %H:%S:%M')
sub_time = time.mktime(end_time) - time.mktime(start_time)
gm_time = time.gmtime(sub_time)
print('过去了%d年%d月%d日%d时%d分%d秒'%(gm_time.tm_year-1970,gm_time.tm_mon-1,
                                      gm_time.tm_mday-1,gm_time.tm_hour,
                                      gm_time.tm_min,gm_time.tm_sec))



#3.
#思路:
    #先判断这个path是文件还是文件夹
    #如果是文件:.py结尾的,执行文件:os.system('python path')
    #如果是文件夹:查看文件夹下的所有内容,如果是文件.py结尾则执行
import os
def exec_py(path):
    if os.path.isfile(path) and path.endswith('.py'):
        os.system('python %s'%path)
    elif os.path.isdir(path):
        path_list = os.listdir(path)
        for name in path_list:
            abs_path = os.path.join(path,name)
            if os.path.isfile(abs_path) and abs_path.endswith('.py'):
                os.system('python %s'%abs_path)
            elif os.path.isdir(abs_path):
                exec_py(abs_path)
exec_py(r'E:\S15\day20')



#4.
def copy(path1,path2):
    filename = os.path.basename(path1)
    if os.path.isfile(path1) and os.path.isdir(path2):
        path2 = os.path.join(path2,filename)
        if os.path.exists(path2):
            print('文件已存在')
        else:
            with open(path1,'rb') as f1,\
                open(path2,'wb') as f2:
                content = f1.read()
                f2.write(content)
copy(r'E:\S15\day20\01.内容回顾.txt',r'E:\S15\day19')



#5.
def get_cwd(path):
    return os.path.dirname(path)
ret = get_cwd('E:\S15\day20')



#6.
os.makedirs('glance/api')
os.makedirs('glance/cmd')
os.makedirs('glance/db')
open('glance/__init__.py','w').close()
open('glance/api/__init__.py','w').close()
open('glance/api/policy.py','w').close()
open('glance/api/versions.py','w').close()
open('glance/cmd/__init__.py','w').close()
open('glance/cmd/manage.py','w').close()
open('glance/db/__init__.py','w').close()
open('glance/db/models.py.py','w').close()




#7.
#思路:
import pickle
def enrol():
    username = input("Input Username:")
    password = input("Input Password:")
    dic = {'usr':username,'pwd':password}
    with open('userinfo','ab') as f:
        pickle.dump(dic,f)
    print('注册成功')
enrol()

def login():
    username = input("Input Username:")
    password = input("Input Password:")
    with open('userinfo','rb') as f:
        while True:
            try:
                str_dic = pickle.load(f)
                if str_dic['usr'] == username and str_dic['pwd'] == password:
                    print('登陆成功')
                    break
            except EOFError:
                print('登陆失败')
                break
login()


#8.发红包
import random
def send_money(money,num):
    money = money * 100     #整数进两位,后面算出小数
    ret = random.sample(range(1,money),num-1)
    ret.sort()
    ret.insert(0,0)
    ret.append(money)
    #print(ret)
    for i in range(len(ret)-1):
        yield (ret[i+1] - ret[i])/100

ret_g = send_money(200,10)
for i in ret_g:
    print(i)
  
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!