一、os 模块是什么:
os 模块是python 标准库中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文档和目录
二、认识文件路径分隔符:
- 路径表示
"\"在windows操作系统中表示区分文件的存储路径层级关系比如: test是D盘下的直系目录,可以表示为:D:\test but
"D:/test" # "/"是本地也是就客户端 文件系统区分层级关系的标识符
r"D\test" "\" 右斜杠在python语言中具有转义字符的意思,r的意思是将字符串视为原始字符串,这意味着将忽略所有转义码,按照原来意思输出
"D:\\test" # \\ 表示绝对路径,在程序处理文件存储路径中,"\\" 表示 "/",是上一层文件目录与下一层文件目录的分隔符,区分上下层级关系。
三、如何区分相对路径和绝对路径:
1、绝对路径就是无论从外部还是内部访问,都能够通过此路径找到文件夹,而相对路径是相对于自身的,其他位置的文件和路径,只能通过内部访问。
2、外部不能通过此路径访问到文件,通俗的来说,绝对路径是一条大家都能够通到目的地的路;而相对路径是一条只有你自己知道怎么走的路。
资料来源: https://jingyan.baidu.com/article/358570f6b854f98f4624fc6b.html
相对路径:指的是内部访问,从内部的一个文件去另一个文件
./test.html 和test.html 表达的含义是一致的,表示的是当前位置是:test.html
../ceshi.py 表示的是上一级目录,也就是说假如有个文件是ceshi.py,在test.html的下面,ceshi.py的路径为:test.html/ceshi.py
ceshi.py 的路径./test/ceshi.py ,ceshi2.py的路径 ./test/xiangdui/ceshi2.py ,现在当前位置在ceshi.py,想去ceshi2.py这个位置 采用的方法就是: “../test/ceshi.py”
绝对路径:指的是从外部访问,从外部直接去一个文件。
假如我要去ceshi.py: D:/test.html/ceshi.py,通过D:/test.html/ceshi.py直接就可以到达。
os模块的常用方法:(谨记 “-”符号不是特殊字符只是作者在写os模块笔记时,用来区分行与行之间层次关系的符号,测试时一定要去掉)
getcwd() :获取当前执行文件的路径
os.getcwd()
使用方法:os.getcwd()
- import os
- fuck = os.getcwd()
- print(fuck)
listdir() :传入一个path路径,返回的是该路径下所有直系文件目录 值是一个列表
使用方法:os.listdir()
- import os
- import pprint
- patth = 'E:/Java软件' 释义:将E盘下的java文件复制给patth对象。
- fuck = os.listdir(patth) 释义:调用os模块中listdir方法将对象patth传递进去。
- pprint.pprint(fuck) 释义:格式化打印看起来比较规整。
walk() :传入任意一个path路径,深层次变例每一个文件的内容,返回的结果是一个由路径,文件夹列表,文件列表组成的元组。
使用方法:os.walk()
- patth = 'E:/Java软件'
- for patth,dir,file in os.walk(patth):
print(patth) 释义:paath 返回的是一个文件路径
pprint.pprint(dir) 释义:dir 返回的是一个个文件夹目录,先从Java文件夹开始,遍历出下一层所有文件夹,遍历完成后,会遍历出的第一个文件夹开始,遍历出本文件夹下的所有文件夹,如果没有文件则会返回为空
pprint.pprint(file) 释义:返回的是一个个文件,xxx不包括文件夹xxxx
path.exists() : 用于测试的文件路径是否存在
使用方法:os.path.exists()
path = 'E:\Java软件'
if os.path.exists(path):
print("指定的文件夹存在")
else:
print("指定的问价夹不存在")
mkdir() : 传入一个path路径,创建单层(直系文件)文件夹;如果文件夹已经存在,就会报错。
使用方法:os.mkdir(path)
- path = 'E:\Java软件'
os.getcwd()
patth = os.getwd()+"/cesi_fuck"
os.mkdir(patth)
makedirs() : 传入一个path路径,生成一个递归文件夹(多层级文件夹)(E:\java文件\cesi_fuck\hua_wei) 这就是一个多层级文件夹
使用方法: os.makedirs()
- path = 'E:\Java软件'
os.getcwd()
patth = path + '\\cesi_fuck\\hua_wei'
os.makedirs(patth)
rmdir() :传入指定路径删除指定路径下的文件夹。注意: 该方法只能删除空文件夹,删除非空文件夹会报错
使用方法: os.rmdir()
path = r'C:\Users\HP\PycharmProjects\pythonProject\python常用模块\cesi_fuck'
os.rmdir(path)
案例总结:
案例实操:测试本地是否存在指定的文件夹,如果存在删除文件重新创建一个指定的文件夹,否则直接创建这样一个文件夹
patth = r'E:\Java软件\cesi_fuck'
os.getcwd() 释义:表示当前目录,就是当前python文件的运行的目录
if os.path.exists(patth):
os.rmdir(patth)
os.mkdir(patth)
print("文件夹已存在,删除后重新创建")
else:
os.mkdir(patth)
print("指定的文件夹不存在,创建一个新的文件夹")
path.isdir(): 传入一个完整的文件路径,判断它是否是文件
使用方法: os.path.isdir()
fuck = os.getcwd()
file_list = os.listdir(fuck) #返回当前工作路径下的文件夹
for file in file_list:
if os.path.isdir(file):
print(file)
path.sep(): 返回当前操作系统的路径分隔符(层级关系用什么符号区分)
使用方法: os.path.sep()
fuck = os.path.sep
print(fuck)
path.abspath() :返回指定目录的“绝对路径”
使用方法: os.path.abspath()
path = os.getcwd()
file = 'E:\Java软件\cesi_fuck'
fuck = os.path.abspath(".") #当前目录的绝对路径 和 os.getcwd() 是一样的
- os.path.abspath("..") #返回当前目录的上一层目录的绝对路径
- os.path.abspath(file) #当前路径相对于指定文件路径 “file” 的绝对路径
path.getsize() :传入一个文件的路径,会返回该文件的大小(计算文件大小的方法),谨记只能计算文件,不能是文件夹的大小
使用方法:os.getsize()
path = r'C:\Users\HP\PycharmProjects\pythonProject\python常用模块\测试3\Test text.txt'
- os.path.getsize(path)
测试可作为参考:
path.getsize()不是只能计算文件的大小吗? 我们可以通过两层for循环实现让它获取文件夹大小,谨记这里只是,从文件夹中一个一个遍历出每一个文件还是只能对文件大小进行计算,文件夹的话,我不能实现对他们的层叠相加,大家可以去试试
import os
import pprint
path = r'C:\Users\HP\PycharmProjects\pythonProject\python常用模块'
for patth,dir,file in os.walk(path):
# print(file)
for i in file:
print(i)
fuck = os.path.getsize(i)
print(fuck)
返回的结果:

总结:对于计算机专业的学生来说,坚持才会是制胜的法宝,不排除有天赋异禀的人,事半功倍的人,但对于普通人来讲,只有不断的坚持,思考,耐心,细心,具备这些学者的所必备素质,方可初见成效。
有问题欢迎留言,小马随时为你的python学习之路鞍前马后。