zoukankan      html  css  js  c++  java
  • os模块习题

    os

    1.使用python代码统计一个文件夹中所有文件的总大小

     1 import os
     2 def func(path):    
     3     size_sum = 0#文件总大小为0
     4     name_lst = os.listdir(path)#拿到这个文件夹下所有文件夹和文件
     5     for name in name_lst:
     6         path_abs = os.path.join(path,name)#将每个文件拼接为目录
     7         if os.path.isdir(path_abs):#如果是文件夹
     8             size = func(path_abs)#继续打开这个文件
     9             size_sum += size
    10         else:
    11             size_sum += os.path.getsize(path_abs)#是文件就取大小
    12     return size_sum
    13 
    14 ret = func(path')
    15 print(ret)

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

     1 import os
     2 def func(path):#接收文件路径
     3     if os.path.isfile(path) and path.endswith(".py"):#如果这个路径是文件且是以.py为结尾(是个py文件)
     4         os.system("python %s"% path)#执行这个文件
     5     elif os.path.isdir(path):#如果这个路径是文件夹
     6         for name in os.listdir(path):#取这个文件夹下的每个子目录
     7             abs_path = os.path.join(path,name)#将每个子目录拼接路径
     8             if abs_path.endswith(".py"):#如果这个子目录是以.py为结尾
     9                 os.system("python %s"% ans_path)#执行这个文件
    10 func(path)

    3.写一个copy函数,接收两个参数,第一个参数是源文件的位置,第二个参数是目标位置,将源文件copy到目标位置,还需要判断一下这个文件之前是否存在

     1 import os
     2 def copy(path1,path2)
     3     filename = os.path.basename(path1)#拿出这个文件的名字
     4     if os.path.isfile(path1) and os.path.isdir(path2):#如果path1这个路径是文件而且path2这个路径是文件夹
     5         if os.path.exists(path):#如果这个文件名已存在
     6             print("已有同名文件")
     7         with open(path1,"rb") as f1,open(os.path.join(path2,filename),""wb"") as f2:#以读的方式打开path1,以写的方式打开path2
     8             content = f1.read()#读path1的文件
     9             f2.write(content)#写入path2
    10 copy(path1,path2)

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

    1 path1 = os.path.dirname(path)
    2 base_name = os.path.basename(path1)
    3 print(base_name)

    可以合并为

    1 base_name = os.path.basename(os.path.dirname(path))
    2 print(base_name)

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

     1 import pickle
     2 #注册
     3 def register():
     4     user = input("username:")
     5     pwd = input("password:")
     6     dic = {"username":user,"password":pwd}
     7     with open("userinfo","ab") as f:
     8         pickle.dump(dic,f)
     9 
    10 #登录
    11 def login():
    12     flag = True
    13     user = input("username:")
    14     pwd = input("password:")
    15     with open("userinfo","rb") as f:
    16         while flag:
    17             try:
    18                 dic = pickle.load(f)
    19                 if user == dic["username"] and pwd == dic["password"]:
    20                     print("登录成功")
    21                     flag = False
    22                     break
    23             except EOFError:
    24                 print("登录失败")
    25                 break
    26 register()
    27 login()

    6.发红包

     1 import random
     2 def red_packet(money,num):
     3     money = money*100
     4     ret = random.sample(range(1,money),num - 1)
     5     ret.sort()
     6     ret.insert(0,0)
     7     ret.append(money)
     8     for i in range(len(ret)-1):
     9         yield(ret[i+1]-ret[i])/100
    10 res = red_packet(200,10)
    11 for money in res:
    12     print(money)
  • 相关阅读:
    P3899 [湖南集训]谈笑风生
    bzoj3252: 攻略
    批量创建用户20个和密码
    创建100个目录dir1-dir100一键完成
    SVM的优缺点
    Python zip() 函数
    经典博客4
    python的空格和tab混用报错问题
    Python的functools.reduce用法
    matplotlib显示AttributeError: 'module' object has no attribute 'verbose'
  • 原文地址:https://www.cnblogs.com/s593941/p/9520349.html
Copyright © 2011-2022 走看看