常用模块学习总结
一、常用模块
-
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模块
-
数学模块 ——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
- 浮点数转整数
-
随机模块 —— 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
-