1、os 模块的常用参数 :
name : 用于获取操作系统的类型
linesep : 用于获取当前操作系统上的换行符
sep : 获取当前操作系统所路径分隔符使用的
# muchenfeng
import os
print(os.name)
# 结果 : nt 为Windows系统 , posix 为 Linux 或者 Mac OS 系统
print("*"*10)
print(os.linesep)
# Windows 会输出 \r\n
print("*"*10)
print(os.sep)
# Windows 会输出 \\
2、os 常用的操作函数
getcwd() 返回当前的路径工作目录
listdir(path) 返回指定路径下的文件和目录
#muchenfeng
import os
print(os.getcwd())
import os
print(os.listdir("C:/"))
3、常用操作
os.path.isdir(path) 判断 path 是否为目录。
os.path.exists(path) 判断 path(文件或目录)是否存在,存在返回 True,否则返回 False。
os.path.abspath(path) 返回path的绝对路径
os.path.jion(path,*paths) 将一个或多个文件或目录进行拼接
os.path.getctime(path) 返回文件或目录在系统中创建的时间
os.path.isfile(path) 判断 path 是否为文件。
os.path.getsize(path) 返回 path 的大小,以字节为单位,若 path 是目录则返回 0。
os.system(command) 调用 shell 脚本。
os.chdir(path) 将当前工作目录更改为 path
4、目录的创建
1、创建一级目录,即一次只能创建一级目录
os.mkdir("path",mode=0o777)
path 用于指定要创建的目录,可以用绝对路径,也可以使用相对路径
mode 指定数值模式,默认值为0777,该参数只在UNIX系统上有用,可省略
用该方法创建目录时只能创建指定路径中的最后一级目录,如果该目录的上一级不存在,则会抛出 FileNotfoundError 异常
#muchenfeng
import os
os.mkdir(r"C:\demo")
如果创建的目录已存在,则会抛出 FileExitsError 异常
解决方法 : 先判断指定的目录是否存在,只有不存在时才创建
#muchenfeng
import os
path = "C:\\demo"
if not os.path.exists(path):
os.mkdir(path)
print("创建成功")
else:
print("创建目录已存在")
如果指定目录有多级,而且最后一级的上级目录中有不存在的,则会抛出 FileNotFoundError异常,并且目录创建不成功
解决方法:
#muchenfeng
#1、 编写递归函数调用os.mkdir() 函数实现
import os
def mkdir(path): # 定义递归创建目录的函数
if not os.path.isdir(path): # 判断是否为有效路径
mkdir(os.path.split(path)[0]) # 递归调用
else: # 如果目录存在,则直接返回
return
os.mkdir(path) # 创建目录
mkdir("D:/mr/test/demo") # 调用mkdir 函数
#2、采用多级目录创建
2、使用创建多级目录
os.makedirs(name,mode = 0o777
name 为要建立的目录可以使用相对路径,也可以使用绝对路
mode 用于指定数值模式 ,默认值为0777 ,只在UNIX 上有效
#muchenfeng
import os
os.makedirs("C:\\demo\\test\\dir\\mr")
5、删除目录
#muchenfeng
os.rmdir("path") #path 为要删除的目录
#muchenfeng
import os
os.rmdir("C:\\demo\\test\\dir\\mr") # 删除"C:\\demo\\test\\dir 目录下的 mr 目录
若指定目录不存在则会抛出异常,所以在删除前应该先判断是否存在
#muchenfeng
import os
path = "C:\\demo\\test\\dir"
if os.path.exists(path): #判断目录是否存在
os.rmdir(path)
print("删除成功")
else:
print("该目录不存在")
注意使用rmdir() 函数只能删除空目录,如果想删除非空,则需要使用Python的标准模块shutil的rmtree() 函数实现
#muchenfeng
import shutil
def remove(path):
# check if folder exists
if os.path.exists(path): # 如果存在则删除
shutil.rmtree(path)
else: # 否则抛出指定的异常
raise ExceptionError("想要抛出的内容")
remove("path")
6、遍历目录
#muchenfeng
os.walk(top,topdown=True,onerror,followlinks=False)
top 为 要遍历内容的根目录,即所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)
topdown 遍历的顺序, 值为True 则自上而下遍历,为False 则自下而上的遍历,默认为True
onerror 指定错误处理方式,可以是一个错误处理函数,默认为忽略, 通常采用默认处理
followlinks 如果为 True,则会遍历目录下的快捷方式,如果为 False,则优先遍历 top 的子目录。默认为False
返回的内容: 返回的是一个三元组(root,dirs,files)。
root 所指的是当前正在遍历的这个文件夹的本身的地址,是一个字符串
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录),是一个列表
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录),是一个列表
#muchenfeng
import os
tuples = os.walk("C:\\demo")
for tuple1 in tuples:
print(tuple1,"\n")
7、遍历指定目录
#muchenfeng
import os
path = "C:\\demo"
print("[,path,] 目录下包括的目录和文件")
for root,dirs,files, in os.walk(path,topdown=True):
for name in dirs:
print(os.path.join(root,name))
for name in files:
print(os.path.join(root,name))