常用系统模块
1.os
os - 提供和文件或者文件夹(目录)或者路径的相关操作
例如:创建文件夹、创建文件,删除文件、判断文件是否存在、获取绝对路径、获取文件夹中所有文件等
1)返回当前工作目录
print(os.getcwd()) #C:\千锋\python代码\pycharm运行代码\day14-常用系统模块和文件操作
2)获取指定文件夹中所有内容的名字
os.listdir(文件夹路径)
3)创建文件夹
a. os.mkdir(文件夹路径) - 在指定路径下创建指定的文件夹(整个路径中只有最后那个文件夹不存在)
s = r'C:\千锋\python代码\pycharm运行代码\day14-常用系统模块和文件操作\first'
os.mkdir(s) #在指定位置创建文件夹first
b. os.makedirs(文件夹路径) - 递归创建文件夹(可以创建路径中所有不存在的文件夹)
l = r'C:\千锋\python代码\pycharm运行代码\day14-常用系统模块和文件操作\secord\tried'
os.makedirs(l) #在指定位置一次性创建文件夹secord和tried
4)返回绝对路径
os.path.abspath(相对路径) - 返回相对路径对应的绝对路径
绝对路径:'C:\千锋\python代码\pycharm运行代码\day14-常用系统模块和文件操作\os模块.py'
文件或文件夹在计算机中全路径(windows电脑绝对路径从盘开始)
相对路径:'.\os模块.py' '..\day14-常用系统模块和文件操作\os模块.py'
用.表示当前目录(当前目录指的是当前代码文件所在的文件夹)
用..表示当前目录的上层目录()
5)获取文件名
os.path.basename('文件路径') - 获取文件路径中最后的文件名或者文件夹名
print(os.path.basename('C:\千锋\python代码\pycharm运行代码\day14-常用系统模块和文件操作\os模块.py')) - 返回os模块.py
6)判断文件存在
os.path.exists('文件路径') - 判断该文件是否存在于该路径
print(os.path.exists('os模块.py')) #True
print(os.path.exists('as模块.py')) #False
7)判断是否是文件或文件夹
os.path.isfile(路径) - 是否是存在的文件
os.path.isdir(路径) - 是否是存在的文件夹
print(os.path.isfile('os模块')) #False
print(os.path.isfile('os模块.py')) #True
8)把目录和文件名合成一个路径
os.path.join(绝对路径, 文件名)
url = '绝对路径'
name = '文件名'
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)
2.math和random
1.数学模块 - math、cmath
math - 普通数字的普通运算模块
cmath - 针对复数的数学模块
import math,cmath
1)浮点数转整数
math.cail(浮点数) - 取较大整数
math.floor(浮点数) - 取较小整数
round(浮点数) - 四舍五入
print(math.ceil(2.000001)) # 3
print(math.floor(2.99)) #2
print(round(2.46)) # 2
print(round(2.66)) # 3
2)绝对值
math.fabs(数字) - 求绝对值后返回浮点数
abs(数字) - 求绝对值返回对应指定数字的类型
3)cmath
print((10+3j)*(2-5j)) #(35-44j)
print(3j-4j) #-1j
2.random模块 - 随机模块 import random
random.randint(M,N) - 产生M-N的随机整数
random.random() - 参数0-1的随机小数
random.uniform(M,N) - 产生M-N的随机小数
random.randrange(M,N,step) - 在一个指定的等差数列中随机获取一个数
random.shuffle(序列) - 洗牌(随机打乱序列中元素的顺序;序列必须可变且有序)
random.choice(序列) - 从序列中随机获取一个元素
random.choices(序列,k=个数,weights=[数量1,数量2...]) - 从序列中随机获取多个元素(默认情况下权重一样,放回抽取)
random.sample(序列,k=个数) - 从序列中随机获取指定个数的元素(不放回的抽取)
3.time
import time
1.time.time()
time.time() - 获取当前时间
t1 = time.time()
print(ti)
时间戳 - 用指定时间到1970年1月1日0时0分0秒(格林威治时间)的时间差来表示一个时间,单位是秒
2.time.localtime() - 获取本地当前时间,返回结构体时间
time.localtime(时间戳) - 将时间戳转换成本地时间
3.time.mktime() - 将结构体时间转换为时间戳
4.time.strftime(时间格式字符串,结构体时间) - 将结构体时间转换成指定格式的字符串时间
5.time.strptime(字符串时间,时间格式) - 将字符串时间转换为结构体时间
4.学习datetime
from datetime import datetime,timedelta
1.datetime类
1)获取当前时间
datetime.now()
2)获取具体时间信息
3)字符串时间转datetime
datetime.strptime('2011年2月4日', '%Y年%m月%d日')
4)将datetime转换成字符串
result = datetime时间对象.strftime(时间格式)
5)将datetime转换成结构体时间
时间对象.timetuple()
2.timedelta - 完成时间的加减操作
注意:timedelta在完成时间的加减操作的时候时间只能以秒、分、时、天或者周为单位
3.3练习
将一个文件夹中的所有文件移动到另一个文件中,按文件后缀名分类创建文件夹,若为文件夹,则不用新建文件夹直接移动
实现1:
import os
import shutil
# input('请输入旧文件夹地址:')
# input('请输入新文件夹地址:')
#测试文件夹'旧文件夹'中文件:[文件夹(其中含有文本3.txt),csv文件.csv,h5文件.html,md文件.md,ppt文件.ppt,文本1.txt,文本2.txt]
old_dir = input('请输入旧文件夹地址:') #测试地址: C:/文件操作实现/旧文件夹
new_dir = input('请输入新文件夹地址:') #测试地址: C:/文件操作实现/新文件夹
count1 = count2 =0 #对目录中的文件进行判断并计数
for x in os.listdir(f'{old_dir}'):
suf = os.path.splitext(x)[-1]
url = f'{new_dir}/{suf}'
new_url =''
#若为文件夹或已经存在以该后缀名为文件夹名,则直接将文件移入
if os.path.exists(url):
count2 += 1
shutil.move(f'{old_dir}/{x}', f'{url}/{x}')
#若不存在相应文件夹,则先创建文件夹,再将文件移入
if not os.path.exists(url):
os.makedirs(f'{new_dir}/{suf}')
new_url = os.path.join(url, x)
shutil.move(f'{old_dir}/{x}', f'{new_url}')
count1 += 1
print('文件操作实现完成!', count1, count2)
实现2:
import os,shutil
def document_classification(dir_path:str):
#获取指定文件夹中所有的内容
dir_contents = os.listdir(dir_path)
for name in dir_contents:
#判断是否是文件
file_path = os.path.join(dir_path, name)
if not os.path.isfile(file_path):
continue
#如果是文件
suffix = os.path.splitext(file_path)[-1][1:]
#获取后缀对应的文件夹的路径
suffix_path = os.path.join(dir_path, suffix)
if not os.path.exists(suffix_path):
os.mkdir(suffix_path)
#移动文件
shutil.move(file_path,os.path.join(suffix_path, name))