Python日志12

常用模块学习总结

一、常用模块
  1. OS模块 —— 提供文件或者文件夹()目录或者路径相关的操作

    • 返回当前工作目录 —— os.getcwd()

    • 获取指定文件夹中所有内容的名字 —— os.listdir(文件夹路径)

    • 创建文件夹:

      • os.mkdir(文件夹路径) —— 在指定路径下创建指定的文件夹(整个路径中只有最后的那个文件夹不存在才可以创建)
      • os.makedirs()—— 递归创建文件夹(可以创建路径中所有不存在的文件夹)
    • 返回相对路径 —— os.path.abspath(相对路径) — 返回相对路径的绝对路径

      • 绝对路径:文件或者文件夹在计算机中全路径(windows电脑绝对路径从盘开始写)

      • 相对路径:用.表示当前目录(当前目录指的时候当前代码文件所在的文件夹)

        ​ 用…表示当前目录的上层目录

    • 获取文件名:os.path.basename —— 获取文件路径中的文件名

    • 检测路径是否有效:os.path.exists

    • 判断是否是文件或者文件夹:

      • os.path.isfile(路径)— 文件
      • os.path.isdir(路径)— 文件夹
      count1 = count2 = 0
      for x in os.listdir('./pdfs'):
          url = f'./pdfs/{x}'
          if os.path.isfile(url):
              count1 += 1
          elif os.path.isdir(url):
              count2 += 1
      print(count1, count2)
      
    • 把目录和文件名合成一个路径 —— os.path.join(文件路径,文件名)

      url = './files'
      name = 'aaa.txt'
      result1 = os.path.join(url, name)
      result2 = f'{url}/{name}'
      print(result1, result2)
      

      获取文件的拓展名(后缀):os.path.splitext

      url1 = './pdfs/学生信息2.csv'
      result = os.path.splitext(url1)
      print(result[-1])
      
二、math和random模块
  1. 数学模块 ——math、cmath(针对复数的数学模块)

    • 浮点数转整数
      • math.ceil(浮点数)— 取较大整数
      • math.floor(浮点数)— 取较小整数
      • round(浮点数)— 四舍五入
    • 求绝对值
      • math.fabs(数字)— 获取绝对值,结果是浮点数
      • math.abs(数字)— 获取绝对值,结束的类型和指定数据的类型—样
    print(math.ceil(2.8799))    # 3
    print(math.ceil(2.1001))    # 3
    print(math.floor(2.8799))   # 2
    print(math.floor(2.1001))   # 2
    print(round(2.6799))        # 3
    print(round(2.4001))        # 2
    
    print(math.fabs(-29))       # 29.0
    print(abs(-29))         # 29
    print(abs(-23.56))      # 23.56
    
    x = 10 + 2j
    y = 20 - 3j
    print(x + y)                #30 - j
    print(x * y)                #200 - 6j
    
  2. 随机模块 —— random

    • 随机整数:random.randint(M,N) — 产生M到N的随机整数

    • 随机小数:random.random()— 产生0到1的随机小数

    • random.randrange(M, N,step)— 在指定的等差数列中随机获取一个数

    • random.shuffle(序列)— 洗牌,随机打乱列表中元素的顺序,列表必须是有序且可变的

    • random.choice(序列) — 抽牌,从序列中随机获取一个元素;抽取方式为放回抽取

      random.choices(序列,k=个数)— 抽牌,从序列中随机获取K个元素(默认情况下元素的权重都一样)

      random.choices(序列,权重序列,k=个数)— 抽牌,从序列中随机获取K个元素

    • random.sample(序列,k = 个数)— 抽牌,从序列中随机获取K个元素;抽取方式为不放回抽取

    import random
    
    print(random.randint(10, 20))
    
    # 0 ~ 1  -> 10 ~ 15
    print(random.random(), random.random()*5 + 10)
    
    print(random.randrange(10, 21, 2))
    
    nums = [10, 20, 30, 40, 50, 60]
    random.shuffle(nums)
    print(nums)
    
    result = random.choice('nums')
    print(result)
    
    result = random.choices(nums, k=2)
    print(result)
    
    
    options = ['特等奖', '一等奖', '二等奖', '三等奖', '再接再厉']
    result = random.choices(options, [1, 3, 10, 100, 1000], k=1)
    print(result)
    
    nums = [10, 20, 30, 40, 50, 60]
    result = random.sample(nums, k=2)
    print(result)
    
    
    options = ['特等奖', '一等奖', '二等奖', '三等奖', '再接再厉']
    result = random.sample(options, k=3, counts=[1, 1, 1, 1, 1])
    print(result)
    
    options = ['特等奖', '一等奖', '二等奖', '三等奖', '再接再厉']
    result = random.choices(options, [1, 1, 1, 1, 1], k=3)
    print(result)
    

    3.时间模块 —— time 和 datetime

    • time

      • time.time() — 获取当前时间(时间戳)

        t1 = time.time()        # 1646294602.6372879
        print(t1)
        

        时间戳 — 用指定时间到1970年1月1日0时0分0秒的时间(格林威治时间)差来表示一个时间,单位是秒

      • time.localtime() — 获取本地当前时间,返回结构体时间

        time.localtime(时间戳) — 将时间戳转换成本地时间对应的结构体时间

        t2 = time.localtime()
        print(t2)
        
        t3 = time.localtime(0)
        print(t3)
        
        t4 = time.localtime(1646294602.6372879)
        print(t4, t4.tm_year)
        
      • time.mktime(结构体时间)— 将结构体时间转换成时间戳

        t5 = time.mktime(t4)
        print(t5)       # 1646294602.0
        
      • time.strftime(时间格式字符串,结构体时间)— 将结构体时间转换成指定格式的字符串时间

            %Y  Year with century as a decimal number.
            %m  Month as a decimal number [01,12].
            %d  Day of the month as a decimal number [01,31].
            %H  Hour (24-hour clock) as a decimal number [00,23].
            %M  Minute as a decimal number [00,59].
            %S  Second as a decimal number [00,61].
            %z  Time zone offset from UTC.
            %a  Locale's abbreviated weekday name.
            %A  Locale's full weekday name.
            %b  Locale's abbreviated month name.
            %B  Locale's full month name.
            %c  Locale's appropriate date and time representation.
            %I  Hour (12-hour clock) as a decimal number [01,12].
            %p  Locale's equivalent of either AM or PM.
            
        # xxxx年xx月xx日 xx:xx:xx
        t_str1 = f'{t4.tm_year}年{t4.tm_mon}月{t4.tm_mday}日 {t4.tm_hour}:{t4.tm_min}:{t4.tm_sec}'
        print(t_str1)
        
        t_str2 = time.strftime('%Y年%m月%d日 %H:%M:%S', t4)
        print(t_str2)
        
        # xxxx/xx/xx
        t_str3 = time.strftime('%Y/%m/%d', t4)
        print(t_str3)
        
        print(time.strftime('%B %A %p %I %H', t4))
        
      • time.strptime(字符串时间,时间格式) — 将字符串时间转换成结构体时间

        t1 = '1992-3-4'
        result = time.strptime(t1, '%Y-%m-%d')
        print(f'周{result.tm_wday + 1}')         #周3
        
      • time.sleep() — 让程序暂停指定时间

        time.sleep(3)
        print('======================')
        
    • datetime

      • 获取当前时间:datetime.now()、datetime.today

        t1 = datetime.now()
        print(t1, type(t1))
        
        t2 = datetime.today()
        print(t2)
        
        #获取具体的时间信息
        print(t1.year)
        print(t1.month)
        print(t1.day)
        print(t1.hour)
        print(t1.minute)
        print(t1.second)
        print(t1.weekday())
        
      • 字符串时间转datetime: datetime.strptime(字符串时间,时间格式)

        result = datetime.strptime('2011年2月4日', '%Y年%m月%d日')
        print(result, result.weekday())          #2011-02-04 00:00:00 4     
        
      • datetime转换成字符串时间:datetime时间对象.strftime(时间格式)

        result = t1.strftime('%Y/%m/%d %a')
        print(result)       # '2022/03/03 Thu'
        
      • 将datetime装换成结构体时间:时间对象.timetuple()

        import time
        result = t1.timetuple()
        print(result)              #time.struct_time(tm_year=2022, tm_mon=3, tm_mday=3, tm_hour=19, tm_min=27, tm_sec=40, tm_wday=3, tm_yday=62, tm_isdst=-1)
        
        print(time.mktime(result)) #1646306860.0
        
    • timedelta — 完成时间的加减操作

      timedelta在完成时间加减操作的时候只能以秒,分,时,天或者周为单位

      时间对象+/- timedelta

      t2 = datetime.strptime('2022-12-31 23:59:40', '%Y-%m-%d %H:%M:%S')
      
      # 1个小时以后的时间
      result = t2 + timedelta(hours=1)
      print(result)       # 2023-01-01 00:59:40
      
      # 1个小时前的时间
      result = t2 - timedelta(hours=1)
      print(result)       # 2022-12-31 22:59:40
      
      # 3天后
      result = t2 + timedelta(days=3)
      print(result)
      
      # 1个小时30分钟前
      result = t2 - timedelta(hours=1, minutes=30)
      print(result)       # 2022-12-31 22:29:40
      
      result = t2 - timedelta(weeks=3)
      print(result)   # 2022-12-10 23:59:40
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值