Python对文件的操作算是方便的,只 需要调用os模块,使用相关函数即可实现目录的创建。主要涉及三个函数:
创新互联自2013年创立以来,是专业互联网技术服务公司,拥有项目做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元伊川做网站,已为上家服务,为伊川各地企业和个人服务,联系电话:18982081108
1、os.path.exists(path) 判断一个目录是否存在
2、os.makedirs(path) 多层创建目录
3、os.mkdir(path) 创建目录
def mkdir(path):
# 引入模块
import os
# 去除首位空格
path=path.strip()
# 去除尾部 \ 符号
path=path.rstrip("\\")
# 判断路径是否存在
# 存在 True
# 不存在 False
isExists=os.path.exists(path)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(path)
print(path+' 创建成功')
return True
else:
# 如果目录存在则不创建,并提示目录已存在
print(path+' 目录已存在')
return False
# 定义要创建的目录
mkpath="d:\\qttc\\web\\"
# 调用函数
mkdir(mkpath)
注意:os.mkdir(path)函数和多层创建目录函数os.makedirs(path)的区别。主要是当父目录不存在的时候os.mkdir(path)不会创建,而os.makedirs(path)会创建父目录。
'os.mkdir():创建一个新目录。
'os.makedirs():创建一个新目录,如果该目录的父目录不存在,则也会一并创建。
下面是一些示例代码,展示了如何使用这两个函数来创建目录:
# 导入 os 模块
import os
# 使用 os.mkdir() 创建一个新目录
os.mkdir("newdir")
# 使用 os.makedirs() 创建一个新目录,如果该目录的父目录不存在,则也会一并创建
os.makedirs("path/to/newdir")
在上面的代码中,第二行导入了 'os模块。然后,第四行使用os.mkdir()函数创建了一个名为newdir的新目录。第六行使用os.makedirs()函数创建了一个新目录,并指定了其完整路径。
注意,如果在执行这段代码时,当前工作目录下已经存在一个名为 'newdir或path/to/newdir的目录,则创建目录操作将会失败,会抛出一个FileExistsError异常。因此,在实际应用中,需要先判断该目录是否已经存在,然后再决定是否执行创建目录的操作
例如,可以使用 'os.path.exists()函数
为实现“按名存取”,必须建立文件名与辅存空间中物理地址的对应关系,体现这种对应关系的数据结构称为文件目录。文件目录表目至少要包含文件名、文件的类型、文件的长度、访问权限、建立时间、访问时间和文件存储地址等内容。通过前面一章的介绍,我们已经知道在文件信息中已经包含了文件名、文件类型访问权限等信息,而存储地址的信息则包含在目录信息中。
16.1路径
路径通常用一个字符串来表示,可以按照路径信息定位到一个目录或文件。如:“C:UsersAdministratorPictures1.jpg”这个信息可以非常方便的找到这个图片文件,“C:UsersAdministratorPictures”这个信息可以帮助我们找到更多的图片文件。
这里所说的“路径”和上网时碰到的“地址”含义比较相似,互联网就相当于将个人电脑可以访问的范围扩大了,互联网中的地址也是对应某一个存储空间的路径,按照地址可以访问互联网上的信息,就如同按照路径可以找到计算机中的文件一样。
在Python中,可以导入 os模块 来进行目录操作。
1、获取当前工作目录getcwd()函数
例:
import os
print(os.getcwd())
运行结果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38
这个路径是当前Python IDLE所在的地址。
2、获取文件的绝对路径abspath()函数
abspath()函数是os模块的子模块path提供的一个函数。用法举例如下:
import os
print(os.path.abspath(r'test.txt'))
运行结果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38 est.txt
16.2 目录操作类函数
1、判断目录是否存在exists()函数
exists()函数是os模块的子模块path中的函数。使用方法举例如下:
import os
print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))
输出结果:
True
2、创建目录mkdir()函数和makedirs()函数
mkdir()函数和makedirs()函数都是由os模块提供的,下面举例说明用法和区别。
例1:
import os
path='d:test'
if not os.path.exists(path):
os.makedirs(path)
print('该文件目录创建成功!')
如果目录d: est已存在,则不再创建;若不存在,则创建。
例2:
import os
path='d:testtest1test11'
if not os.path.exists(path):
os.makedirs(path)
print('该文件目录创建成功!')
虽然目录d: est已存在,但可以在其下继续创建子目录。上面的代码可以成功地创建d: est est1 est11目录。
mkdir()函数和makedirs()函数用法基本一样,不同之处在于mkdir()函数只能能创建一级目录。
3、删除目录函数rmdir()函数
rmdir()函数是由os模块提供的。
例如:通过上面的例子已经建立了d: est est1 est11目录,现在去删除子目录test11(此子目录为空目录),代码如下:
import os
os.rmdir('d:testtest1test11')
如果要删除的目录非空(其下还包含有文件或文件夹),则不能删除,并且出现Windows文件操作错误的提示(Python是调用操作系统命令完成文件和目录操作的)。譬如d: est目录下含有有子目录,则不能对其进行如下删除操作。
import os
os.rmdir('d:test')
此时,会出现如下错误提示:
Traceback (most recent call last):
File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in
os.rmdir('d:test')
OSError: [WinError 145] 目录不是空的。: 'd:test'
4、删除非空目录函数rmtree()函数
rmtree()函数是由Python内置的标准模块shutil提供的,可以删除目录及目录下的文件和子目录。如删除d: est目录及其下的子目录和文件,可用如下代码:
import shutil
shutil.rmtree('d:test')
5、遍历目录walk()函数
walk()函数是由os模块提供的。
语法格式:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
其中,top是所要遍历的目录的地址;topdown为可选参数,为 True时自上而下遍历 目录,为False时自下而上遍历目录,默认值为True;onerror为可选参数,用于指定异常处理方式,默认为忽略;followlinks为可选参数,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
该函数的返回值为一个三元组(root,dirs,files)。root 所指的是当前正在遍历的这个文件夹的本身的地址;dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录);files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)。
例:遍历d: est目录及其子目录下的所有子目录和文件:
d: est目录及其下的子目录和文件
import os
path='d:test'
tups=os.walk(path) # 函数walk()的返回值为三元组
for root,dirs,files in tups: # 遍历这个三元组
for name in dirs: #遍历存放目录值的元组
print('dir:',os.path.join(root,name))
for name in files: #遍历存放文件名值的元组
print('file:',os.path.join(root,name))
运行结果如下:
dir: d: est est1
dir: d: est est1 est11
dir: d: est est1新建文件夹
file: d: est est1新建文本文档.txt
file: d: est est1 est11新建文本文档.txt
答案正确。以下是这些函数的具体说明:
os.getcwd():获取当前工作目录的路径名。
os.listdir(path):列出指定目录下的所有文件和子目录(不包含 . 和 .. 目录)。
os.mkdir(path[, mode]):创建一个新目录,其中 path 参数是要创建的目录路径名,mode 参数是可选的,指定目录权限,默认为 0777。
os.makedirs(path1/path2…[, mode]):递归创建多层目录结构,其中 path1/path2… 参数是要创建的目录路径名,在这个路径下逐层创建目录,并且可以递归创建多层目录,mode 参数是可选的,指定目录权限,默认为 0777。
os.rmdir(path):删除指定的目录,前提是这个目录必须为空,否则无法删除。
os.removedirs(path1/path2…):递归删除指定的目录及其中的所有空目录,其中 path1/path2… 参数是要删除的目录路径名,在递归删除过程中,若某个目录不为空,则不会被删除。
os.chdir(path):改变当前工作目录,其中 path 参数表示要切换的目录路径名。
os.walk(top[, topdown[, onerror]]):以目录树形式遍历指定目录下的所有文件和子目录,并返回一个三元组 (dirpath, dirnames, filenames),其中 dirpath 表示当前目录路径,dirnames 是当前目录下的所有子目录名,filenames 是当前目录下的所有非目录文件名。当 topdown 参数为 True 时,表示先遍历一级目录,再判断是否需要递归遍历其它子目录,默认值为 True;当 onerror 参数不为 None 时,表示如果在遍历目录树时遇到错误是否抛出异常(否则该错误直接被忽略),onerror 参数需要传入一个函数,接受三个参数,分别是出现错误的根目录、错误对象 Exception 和 traceback 对象。
以上是 os 模块中的一些常用目录相关函数。需要注意的是,对于一些有进行文件和目录操作的函数,一定要注意操作的权限和路径的正确性,避免在操作时发生不必要的错误。