3.3-常用系统模块

常用系统模块

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)

时间戳 - 用指定时间到197011000秒(格林威治时间)的时间差来表示一个时间,单位是秒

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练习

将一个文件夹中的所有文件移动到另一个文件中,按文件后缀名分类创建文件夹,若为文件夹,则不用新建文件夹直接移动

实现1import 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)

实现2import 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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值