0
点赞
收藏
分享

微信扫一扫

day14学习总结

贵州谢高低 2022-03-11 阅读 109

day14学习总结:

  1. os模块的作用

    1. os模块 - 文件或者文件夹(目录)或者路径相关操作
      例如:创建文件夹、创建文件、删除文件、判断文件是否存在、获取绝路径、获取一个文件夹中所有的文件等等

    2. 1)返回当前工作目录

      1. print(os.getcwd()) 
        
      2. 获取指定文件夹中所有的内容的名字

      3. os.listdir(文件夹路径)
        
    3. 创建文件夹

      """
      os.mkdir(文件夹路径)   -   在指定路径下创建指定的文件夹(整个路径中只有最后的那个文件夹不存在才可以创建)
      os.makedirs(文件夹路径)  -  递归创建文件夹 (可以创建路径中所有不存在的文件夹)
      """
      
    4. 4)返回绝对路径
      """
      os.path.abspath(相对路径)   -   返回相对路径对应的绝对路径
      
      绝对路径:文件或者文件夹在计算机中全路径(windows电脑绝对路径从盘开始写)
      相对路径:用.表示当前目录(当前目录指的是当前代码文件所在的文件夹)
               用..表示当前目录的上层目录
      
      /Users/yuting/lessons/Python2201/01语言基础/day14-常用模块/demo.py
      ./demo.py
      ../day14-常用模块/demo.py
      """
      5) 获取文件名
      # os.path.basename(文件路径)   -   获取文件路径中的文件名
      result = os.path.basename('//demo.py')
      print(result)
      # 6) 检测路径是否有效
      print(os.path.exists('//demo.py'))
      
      # 7) 判断是否是文件或者文件夹
      """
      os.path.isfile(路径)  -  是否是文件
      os.path.isdir(路径)   -   是否是文件夹
      """
      # 8) 把目录和文件名合成一个路径
      # os.path.join(文件夹路径, 文件名)
      url = './files'
      name = 'aaa.txt'
      result1 = os.path.join(url, name)
      result2 = f'{url}/{name}'
      print(result1, result2)
      
      # 9) 获取文件的扩展名(后缀)
      url1 = './pdfs/学生信息2.csv'
      result = os.path.splitext(url1)
      print(result[-1])
      
  2. 1. 数学模块  -  math、cmath(针对复数的数学模块)
    import math,  cmath
    """
    1) 浮点数转整数
    math.ceil(浮点数)      -      取较大整数
    math.floor(浮点数)     -      取较小整数
    round(浮点数)      -   四舍五入
    
    2) 求绝对值
    math.fabs(数字)   -  获取绝对值,结果是浮点数
    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
    
  3. # 2. 随机模块 - random
    """
    1)随机数
    随机整数:random.randint(M, N)   -  产生M到N的随机整数
    随机小数:random.random()   -  产生0到1的随机小数
    random.randrange(M, N, step)   -  在指定的等差数列中随机获取一个数
    
    2)洗牌
    random.shuffle(序列)  -  洗牌(随机打乱序列中元素的顺序; 序列必须是可变的并且有序的)
    
    3)抽牌
    random.choice(序列)    -   从序列中随机获取一个元素
    random.choices(序列, k=个数)   -  从序列中随机获取指定个数个元素(默认情况下元素的权重都一样;有放回抽取)
    random.choices(序列, 权重值序列, k=个数)
    random.sample(序列, k=个数)  -  从序列中随机获取指定个数个元素(无放回抽取)
    random.sample(序列, k=个数, counts=权重序列)   -  Python3.9.0以后才可以使用
    """
    
import time

# 1. time.time()
"""
time.time()   -  获取当前时间,返回时间戳

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

1646294602.6372879  -  '2022-3-3 04:10:39'
"""
t1 = time.time()        # 1646294602.6372879
print(t1)

# 2. time.localtime()
"""
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)

# 3. time.mktime()
# time.mktime(结构体时间)   -  将结构体时间转换成时间戳
t5 = time.mktime(t4)
print(t5)       # 1646294602.0

# 4.time.strftime()
"""
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.
"""
# 5. time.strptime()
# time.strptime(字符串时间, 时间格式)   -  将字符串时间转换成结构体时间
t1 = '1992-3-4'
result = time.strptime(t1, '%Y-%m-%d')
print(f'周{result.tm_wday + 1}')

# 6. time.sleep()
# time.sleep(秒)   -  让程序暂停指定时间
time.sleep(3)
print('======================')
  1. ​ datetime类

    from datetime import datetime, date, timedelta
    
    # 1. datetime类
    # 1)获取当前时间
    t1 = datetime.now()
    print(t1, type(t1))
    
    t2 = datetime.today()
    print(t2)
    
    # 2) 获取具体的时间信息
    print(t1.year)
    print(t1.month)
    print(t1.day)
    print(t1.hour)
    print(t1.minute)
    print(t1.second)
    print(t1.weekday())
    
    # 3) 字符串时间转datetime
    # datetime.strptime(字符串时间, 时间格式)
    result = datetime.strptime('2011年2月4日', '%Y年%m月%d日')
    print(result, result.weekday())
    
    # 4) 将datetime转化成字符串
    # datetime时间对象.strftime(时间格式)
    result = t1.strftime('%Y/%m/%d %a')
    print(result)       # '2022/03/03 Thu'
    
    # 5) 将datetime转换成结构体时间
    # 时间对象.timetuple()
    import time
    result = t1.timetuple()
    print(result)
    print(time.mktime(result))
    
    # 2.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
    
  2. 作业

# 将f盘中的文件进行整理
import os
import shutil
result3=[]
result=os.listdir('F:\作业练习')
for x in result:
    if os.path.isdir(f'F:\作业练习\\{x}'):
        result1=os.listdir(f'F:\作业练习\\{x}')
        for y in result1:
            if os.path.isdir(f'F:\作业练习\\{x}\\{y}'):
                result1_1=os.listdir(f'F:\作业练习\\{x}\\{y}')
                for z in result1_1:
                    if os.path.isdir(f'F:\作业练习\\{x}\\{y}\\{z}'):
                        print(f'F:\作业练习\\{x}\\{y}\\{z}是文件夹,目前此功能暂时只支持判断此目录下两级文件夹是否还存在文件夹')
                    elif os.path.isfile(f'F:\作业练习\\{x}\\{y}\\{z}'):
                        result1_1_1=os.path.splitext(f'F:\作业练习\\{x}\\{y}\\{z}')
                        result3.append(result1_1_1[-1])
            else:
                result1_2=os.path.splitext(f'F:\作业练习\\{x}\\{y}')
                result3.append(result1_2[-1])
    elif os.path.isfile(f'F:\作业练习\\{x}'):
        result2=os.path.splitext(f'F:\作业练习\\{x}')
        result3.append(result2[-1])
print(result3)
result4=[]
for g in result3:
    if g not in result4 and g!='':
        result4.append(g)
print(result4)
os.mkdir('F:\新文件整理')
for h in result4:
    os.makedirs(f'F:\新文件整理\\{h}')
for l in os.listdir('F:\新文件整理'):
    result = os.listdir('F:\作业练习')
    for x in result:
        if os.path.isdir(f'F:\作业练习\\{x}'):
            result1 = os.listdir(f'F:\作业练习\\{x}')
            for y in result1:
                if os.path.isdir(f'F:\作业练习\\{x}\\{y}'):
                    result1_1 = os.listdir(f'F:\作业练习\\{x}\\{y}')
                    for z in result1_1:
                        if os.path.isdir(f'F:\作业练习\\{x}\\{y}\\{z}'):
                            pass
                            # print(f'F:\作业练习\\{x}\\{y}\\{z}是文件夹,目前此功能暂时只支持判断此目录下两级文件夹是否还存在文件夹')
                        elif os.path.isfile(f'F:\作业练习\\{x}\\{y}\\{z}'):
                            result1_1_1 = os.path.splitext(f'F:\作业练习\\{x}\\{y}\\{z}')
                            if result1_1_1[-1] == f'{l}':
                                shutil.move(f'F:\作业练习\\{x}\\{y}\\{z}',f'F:\新文件整理\\{l}')
                else:
                    result1_2 = os.path.splitext(f'F:\作业练习\\{x}\\{y}')
                    if result1_2[-1] == f'{l}':
                        shutil.move(f'F:\作业练习\\{x}\\{y}',f'F:\新文件整理\\{l}')
        elif os.path.isfile(f'F:\作业练习\\{x}') == 1:
            result2 = os.path.splitext(f'F:\作业练习\\{x}')
            if result2[-1]==f'{l}':
                shutil.move(f'F:\作业练习\\{x}',f'F:\新文件整理\\{l}')
举报

相关推荐

day14

Day14 IO

Oracle day14

Day14(String类)

算法打卡Day14

java基础 Day14

0 条评论