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是存在的

结果展示 :

                 

OS模块 python os模块创建文件_文件名

 .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") 

os.popen("bash command").read() 

OS模块 python os模块创建文件_python_02

OS模块 python os模块创建文件_OS模块 python_03

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模块 python os模块创建文件_文件名_04

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)