python OS 模块 详细方法说明
os模块 具体方法详细说明 (有3类) :
os 模块使用需要导入 : import os
1.文件和文件夹的处理
.mkdir() .makedirs() 创建文件夹
import os os.makedirs('dir1/dir2') # makedirs() 可以同时创建2个文件夹,且可以是包含关系 os.mkdir('dir3') # 首先创建一个dir3文件夹 os.mkdir('dir3/dir4') # mikdir() 想要文件夹内创建文件夹,要保证dir3是存在的
结果展示 :

.rmdir() .removedirs() 删除文件夹
# 只能删空文件夹 os.rmdir('dir3/dir4') # rmdir 仅删除dir3中的dir4文件夹, os.removedirs('dir3/dir4') #removedirs dir3和dir4 同时删除, # 若dir3中有其他的文件如a.txt, 则只删除dir4文件夹
os.listdir() 查看当前目录下的所有文件夹和文件
os.path.join() 上下级目录进行重组
file_lst = os.listdir('D:\sylar\s15') # 获取是s15文件夹下的文件名称 for path in file_lst: #遍历文件名 print(os.path.join('D:\sylar\s15',path)) #文件名与上级路径进行重组
2. 执行操作系统的命令:
os.system ("bash command") 运行shell命令,直接显示
os.popen("bash command").read() 运行shell命令,获取执行结果
os模块所做的事情 定制了很多方法 间接的帮助你去调用操作系统的命令 获得结果 然后帮助你分析整理成我们需要的数据类型的形态 你也可以os.popen/os.system直接取调用操作系统的命令 获得结果 但是 分析和整理的工作需要你自己做 用os模块的方法本身能够完成的功能我们就用定制好的方法就够了 如果有一天 你发现os模块定制好的功能解决不了我们的问题了 而刚好操作系统的命令能够很好地帮助我们解决问题 这个时候就用os.popen/os.system
os.system()和os.popen() 执行字符串数据类型的 命令行代码
eval()和exec() 执行的是字符串数据类型的 python代码
# 统计文件的大小
# os.path.getsize('路径') # python的命令
# dir 路径 \C # 操作系统的命令
# 帮助你显示当前路径下的所有文件和文件夹
# os.system('dir 路径') # 使用python语言直接执行操作系统的命令
# os.listdir('路径') # 使用python语言的os模块提供的方法 间接调用了操作系统命令
os.system('dir') # 执行操作系统的命令,没有返回值, #直接进行实际的操作, 如删除和创建一个文件夹 # 程序要处理这些路径 ret = os.popen('dir') # 是和做查看类的操作 s =ret.read() print(s) #文件目录信息
文件目录结果展示 :

os.getcwd() 获取当前执行命令的时候所在的目录
os.chdir() 修改当前执行命令的时候所在的目录
print('-->',os.getcwd()) # current work dir 当前工作目录 # 并不是指当前文件所在的目录,而是当前文件是在哪个目录下执行的 ret = os.popen('dir') # 是和做查看类的操作 s =ret.read() print(s) os.chdir('D:\sylar\s15\day18') # 切换当前的工作目录 ret = os.popen('dir') # 是和做查看类的操作 s =ret.read() print(s)
3.路径的处理
os.path.abspath (path) 将路径中不符合规范的改成操作系统中默认的格式
能够将找到的相对路径改成绝对路径
path = os.path.abspath(r'E:\A学习\python--study\untitled\code\4.os模块.py') print(path) path = os.path.abspath(r'4.os模块.py') print(path) # E:\A学习\python--study\untitled\code\4.os模块.py # E:\A学习\python--study\untitled\code\4.os模块.py
os.path.split (path) 将一个路径分成两段,第二段是一个文件或文件夹 (路径中最里层的) 返回元组形式
os.path.dirname (path) 获取两段路径中的第一个
os.path.basename (path) 获取两段中的第二个(文件或文件夹)
# 如果你两个值都需要 os.path.split
# 如果你只要一个值 os.path.dirname/os.path.basename
path= os.path.split(r'E:\A学习\python--study\untitled\code\4.os模块.py') ret1 = os.path.dirname(r'E:\A学习\python--study\untitled\code\4.os模块.py') ret2 = os.path.basename(r'E:\A学习\python--study\untitled\code\4.os模块.py') print(path) print(ret1) print(ret2) # ('E:\\A学习\\python--study\\untitled\\code', '4.os模块.py') # E:\A学习\python--study\untitled\code # 4.os模块.py
os.path.exists (path) 判断文件或文件夹是否存在, 参数为文件的路径(相对或绝对都可以)
os.path.isabs (path) 判断文件或文件夹是否存在, 路径只能是 绝对路径
res = os.path.exists(r'4.os模块.py') print(res) #True res1 = os.path.isabs('4.os模块.py') res2 = os.path.isabs(r'D:\sylar\s15\day19\4.os模块.py') print(res1) #False print(res2) #True
os.list.dir (path) 展示目录下的文件或文件夹
os.path.join (path,文件名) 上下级目录进行重组
os.path.isdir (path) 判断是否为文件夹
os.path.isfile (path) 判断是否为文件
print(os.path.isdir(r'D:\sylar\s15\aaa')) print(os.path.isfile(r'D:\sylar\s15\aaa')) print(os.path.isfile('D:\sylar\s15\day01')) print(os.path.isdir('D:\sylar\s15\day01'))
os.path.getsize (path) 查看文件的大小 只能查看文件不能查看文件夹
size= os.path.getsize(r'E:\A学习\python--study\untitled\code\4.os模块.py') # 查看文件大小 print(size) # 4321 字节
如果要查看文件夹的大小 : 需要打开文件夹一层层统计文件的大小
# 使用python代码统计一个文件夹中所有文件的总大小
# 你需要统计文件夹大小
# D:\sylar\s15\ 文件夹的大小
# 拿到这个文件夹下所有的文件夹 和 文件
# 是文件就取大小
# 是文件夹 再打开这个文件夹 : 文件/文件夹
♥♥♥♥♥♥ 重点
# 递归方法 def func(path): # r'D:\sylar\s15' size_sum = 0 name_lst = os.listdir(path) for name in name_lst: path_abs = os.path.join(path,name) if os.path.isdir(path_abs): size = func(path_abs) size_sum += size else: size_sum += os.path.getsize(path_abs) return size_sum ret = func(r'D:\sylar\s15') print(ret) # 循环 # 堆栈思想 # 列表 满足一个顺序 先进来的后出去 lst = [r'D:\sylar\s15',] # 列表的第一个目录就是我要统计的目录 size_sum = 0 while lst: path = lst.pop() path_list = os.listdir(path) for name in path_list: abs_path = os.path.join(path,name) if os.path.isdir(abs_path): lst.append(abs_path) else: size_sum += os.path.getsize(abs_path) print(size_sum)

浙公网安备 33010602011771号