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)
posted @ 2018-08-21 15:40  葡萄想柠檬  Views(659)  Comments(0)    收藏  举报
目录代码