IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python-目录操作 -> 正文阅读

[Python知识库]Python-目录操作

一、os和os.path模块

在Python中,内置了os模块及其子模块so.path用于对目录或文件进行操作。在使用os模块或者os.path模块时,需要先用import导入。
import os

  1. os.name
    用于获取操作系统类型;Windows系统输入结果为nt,如果是posix,则表示是Linux、Unix或者MacOS操作系统。
  2. os.linesep
    用于获取当前操作系统上的换行符
  3. os.sep
    用于获取当前操作系统所使用的路径分隔符。
  4. os模块操作目录的函数
    |函数| 说明|
    |–|--|
    |os.getcwd() | 返回当前工作目录 |
    |os.getcwdb() | 返回一个当前工作目录的Unicode对象 |
    |os.listdir(path) | 返回path指定的文件夹包含的文件或文件夹的名字的列表。 |
    |os.mkdir(path[, mode]) | 创建目录 |
    |os.mkdir(path1/path2…[, mode]) | 创建多级目录 |
    |os.rmdir(path) | 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。 |
    |os.removedirs(path)| 递归删除目录。 |
    |os.chdir(path) |递归删除目录。 |
函数说明
os.getcwd()返回当前工作目录
os.getcwdb()返回一个当前工作目录的Unicode对象
os.listdir(path)返回path指定的文件夹包含的文件或文件夹的名字的列表。
os.mkdir(path[, mode])创建单级目录
os.mkdir(path1/path2…[, mode])创建多级目录
os.rmdir(path)删除path指定的空目录,如果目录非空,则抛出一个OSError异常。
os.removedirs(path)递归删除目录。
os.remove(filePath)删除指定文件,并且只能删除文件;如果path 是一个文件夹,将抛出OSError
os.chdir(path)把path设置为当前工作目录
os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])输出在文件夹中的文件名通过在树中游走,向上或者向下。即是遍历目录树,返回一个元组,包含所有路劲名、所有目录列表和文件列表3个元素。
  1. os.path模块操作目录的函数
函数说明
???????os.path.abspath(path)根据当前工作目录路径连接该文件名后所组成的新的路径名,但这个路径不一定是真实存在的路径。
os.path.exists(path)用于判断path是否存在,如果存在返回True,否则返回False。
os.path.join((path, name)将目录与目录或者文件名拼接起来
???????os.path.split(path)将path分割成目录和文件名,如果给的path本身就是目录的话,也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在,以元组返回
os.path.dirname(path)返回path的目录路径,就是os.path.split(path)的第一个元素。
???????os.path.basename(path)返回path最后的文件名。如果path以/或\结尾,就会返回空值。即os.path.split(path)的第二个元素
???????os.path.splitext(path)分离文件名与扩展名
??????????????os.path.isabs(path)判断path是否是绝对路径,如果是返回True,否则返回False。
??????????????os.path.isfile(path)判断path是否是文件,如果是返回True,否则返回False。必须是真实存在的文件
??????????????os.path.isdir(path)判断path是否是目录,如果是目录返回True,否则返回False。必须是真实存在的目录
??????????????os.path.normpath(path)将path转换成规范的文件路径
??????????????os.path.getsize(name)获得文件大小,如果name是目录返回结果是0L或者4096L;如果name代表的目录或文件不存在,会报WindowsError异常。
?????????????????????os.path.getatime(filename)返回文件的最后访问时间,返回的是时间戳。
?????????????????????os.path.getctime(filename)以时间戳的形式返回文件或目录的创建时间,在Unix系统上是文件最近更改的时间,在Windows上是文件或目录的创建时间。
os.path.getmtime(filename)以时间戳的形式返回文件或目录的最后存取时间

二、路径

  1. 相对路径
import os
print(os.getcwd()) #输入当前目录

运行结果如下:

E:\PC\untitled\练习
  1. 绝对路径
import os.path
print(os.path.abspath(r"不存在目录\测试目录\写入文件.txt"))
#根据当前工作目录路径连接该文件名后所组成的新的路径名,但这个路径不一定是真实存在的路径。

运行结果如下:

E:\PC\untitled\练习\不存在目录\测试目录\写入文件.txt
  1. 拼接路径
    可以将多个路径拼接到一起组成一个新的绝对路径
import os.path
print(os.path.join(r"G:\PC\untitled\练习","不存在目录\测试目录","写入文件.txt"))
#使用os.path.join()函数拼接路径时,并不会检测该路径是否真实存在

运行结果如下:

G:\PC\untitled\练习\不存在目录\测试目录\写入文件.txt

如果拼接的路径中存在多个绝对路径时,会以从左到右最后一次出现的为准,并且该路径之前的参数都会被忽略。

import os.path
print(os.path.join(r"G:\PC\untitled\练习","不存在目录\测试目录","C:\demo\练习","写入文件.txt"))

运行结果如下:

C:\demo\练习\写入文件.txt

Process finished with exit code 0

三、判断目录是否存在

import os.path
print(os.path.exists("C:\demo\练习\写入文件.txt")) #不存在
print(os.path.exists("E:/PC/untitled/练习/test.py")) #存在

运行结果如下:

False
True

Process finished with exit code 0

四、创建目录

  1. 创建一级目录
    os.mkdir(path[, mode])
    path:用于指定创建的目录,可以使用绝对路径,也可以使用相对路径。
    mode:用于指定数值模式,默认为0777。该参数在非Unix系统上无效或被忽略。
    该函数只能创建指定路径中的下一级目录,如果该目录的上一级目录不存在,则抛出FileNotFoundError异常。
import os
os.mkdir(r"D:\demo")

如果创建的路径已经存在,则将抛出异常FileExistsError异常。

import os
path = "D:\demo"            #指定要创建的目录
if not os.path.exists(path):#判断要创建的目录是否存在
    os.mkdir(r"D:\demo")    #创建目录
    print("目录创建成功")
else:
    print("该目录已经存在!")
  1. 创建多级目录
    os.makedirs(path[, mode])
import os
os.makedirs(r"D:\demo\test\dir")

五、删除目录

  1. 删除单级目录
    os.rmdir(path)
import os
os.rmdir(r"D:\demo\test\dir")

运行结果如下:
在这里插入图片描述
删除路径之前,可以先做判断路上是否存在

import os
import os.path
path = r"D:\demo\test\dir"            
if not os.path.exists(path):#判断目录是否存在
    os.rmdir(r"D:\demo")    #删除目录
    print("目录删除成功")
else:
    print("该目录不存在!")
  1. 删除多级目录
    os.removedirs(path)
    所有非空目录都会被删除
import os
os.removedirs(r"D:\demo\test")
  1. 删除非空目录
    使用shutil模块的rmtree()函数
import shutil
#删除D:\demo\test目录下的dir目录及其子目录和文件
shutil.rmtree(r"D:\demo\test\dir")

六、遍历目录

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
参数说明:

  • top:指定需要遍历的目录树的路径。
  • topdown:可选参数,默认值是“True”,表示先返回目录树下的文件,然后遍历目录树下的子目录。设为False时,表示先遍历目录树下的子目录,返回子目录下的文件,最后返回根目录下的文件。
  • onerror:默认值是“None”,表示忽略文件遍历时产生的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。
  • followlinks:可选参数,默认情况下,walk()函数不会向下转换成解析到目录的符号链接,将该参数值设置为True,表示用于指定在支持的系统上访问由符号链接指向的目录。
  • 返回值:返回一个包含3个元素(dirpath、dirnames、filenames)的元组生成器对象。其中,dirpath表示当前遍历的路径,是一个字符串,dirnames表示当前路径下包含的子目录,是一个列表;filenames表示当前路径下包含的文件,也是一个列表。
import os
tre =os.walk(r"D:\demo\test")

运行结果如下:

('D:\\demo\\test', ['dir', 'dir1'], ['新建文本文档 (2).txt', '新建文本文档.txt'])
('D:\\demo\\test\\dir', [], [])
('D:\\demo\\test\\dir1', [], ['新建文本文档.txt'])

Process finished with exit code 0
import os
path = r"D:\demo\test"
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))

运行结果如下:

【 D:\demo\test 】目录下包含的文件和目录
目录 D:\demo\test\dir
目录 D:\demo\test\dir1
文件路径 D:\demo\test\新建文本文档 (2).txt
文件路径 D:\demo\test\新建文本文档.txt
文件路径 D:\demo\test\dir1\新建文本文档.txt

Process finished with exit code 0
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 11:57:20  更:2021-10-17 11:57:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:06:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码