在
Python
中,
os
模块提供了两个创建目录的函数,一个用于创建一级目录,另一个用于创建多级目录。
1、创建一级目录
创建一级目录是指一次只能创建一级目录。在Python
中,可以使用os
模块提供的mkdir()
函数实现。通过该函数只能创建指定路径中的最后一级目录,如果该目录的上一级不存在,则抛出FileNotFoundError
异常。mkdir()
函数的基本语法格式如下:
os.mkdir(path, mode=0o777)
参数说明:
path
:用于指定要创建的目录,可以使用绝对路径,也可以使用相对路径。mode
:用于指定数值模式,默认值为0777
。该参数在非UNIX
系统上无效或被忽略。
例如,在Windows
系统上创建一个C:\demo
目录,可以使用下面的代码:
import os
os.mkdir("C:\\demo") # 创建C:\demo目录
执行下面的代码后,将在C盘根目录下创建一个demo目录,如下图所示。
如果在创建路径时已经存在将抛出FileExistsError
异常,例如,将上面的示例代码再执行一次,将抛出如图2所示的异常。
要解决上面的问题,可以在创建目录前,先判断指定的目录是否存在,只有当目录不存在时才创建。具体代码如下:
import os
path = "C:\\demo" # 指定要创建的目录
if not os.path.exists(path): # 判断目录是否存在
os.mkdir(path) # 创建目录
print("目录创建成功!")
else:
print("该目录已经存在!")
执行上面的代码,将显示“该目录已经存在!”。
注意:如果指定的目录有多级,而且最后一级的上级目录中有不存在的,则抛出FileNotFoundError
异常,并且目录创建不成功。要解决该问题有两种方法,一种是使用创建多级目录的方法(将在后面进行介绍)。另一种是编写递归函数调用os.mkdir()
函数实现,具体代码如下:
os.path.split()函数
语法:os.path.split('PATH')
参数说明:
PATH
指一个文件的全路径作为参数- 如果给出的是一个目录和文件名,则输出路径和文件名
- 如果给出的是一个目录名,则输出路径和为空文件名
实际上,该函数的分割并不智能,它仅仅是以 “PATH
” 中最后一个 ‘/
’ 作为分隔符,分隔后,将索引为0
的视为目录(路径),将索引为1
的视为文件名,如:
2、删除目录
删除目录可以通过使用os
模块提供的rmdir()
函数实现。通过rmdir()
函数删除目录时,只有当要删除的目录为空时才起作用。rmdir()
函数的基本语法格式如下:
os.rmdir(path)
其中,path
为要删除的目录,可以使用相对路径,也可以使用绝对路径。
例如,要删除刚刚创建的“C:\demo\test\dir\lzy
”目录,可以使用下面的代码:
import os
os.rmdir("C:\\demo\\test\\dir\\lzy") # 删除C:\demo\test\dir\mr目录
执行上面的代码后,将删除“C:\demo\test\dir
”目录下的lzy
目录。
注意:如果要删除的目录不存在,那么将抛出“FileNotFoundError: [WinError 2]
系统找不到指定的文件”异常。因此,在执行os.rmdir()
函数前,建议先判断该路径是否存在,可以使用os.path.exists()
函数判断。具体代码如下:
import os
path = "C:\\demo\\test\\dir\\lzy" # 指定要创建的目录
if os.path.exists(path): # 判断目录是否存在
os.rmdir("C:\\demo\\test\\dir\\lzy") # 删除目录
print("目录删除成功!")
else:
print("该目录不存在!")
使用rmdir()
函数只能删除空的目录,如果想要删除非空目录,则需要使用Python
内置的标准模块shutil
的rmtree()
函数实现。例如,要删除不为空的“C:\\demo\\test
”目录,可以使用下面的代码:
import shutil
shutil.rmtree("C:\\demo\\test") # 删除C:\demo目录下的test子目录及其内容
3、应用
在e:\下如果lzy文件夹存在,则删除。如果不存在,则新建。
import os
path = "e:\\lzy"
if os.path.exists(path): #该目录存在
#删除
os.rmdir(path)
else:
os.mkdir(path) #创建