后端开发 \ Python \ Python 文件和目录管理(os)

Python 文件和目录管理(os)

总点击21
简介:版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/u011012932/article/details/78218051

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011012932/article/details/78218051

简述

目录(或文件夹)是文件和子目录的集合在 Linux 中,操作系统提供了很多的命令(例如:ls、cd),用于文件和目录管理。在 Python 中,有一个 os 模块,也提供了许多便利的方法来管理文件和目录。| 版权声明:一去、二三里,未经博主允许不得转载。

os 模块

os:语义为操作系统。所以,os 模块提供的肯定是操作系统相关的功能了(与具体的平台无关)。如果用 dir() 查看 os,会发现内容相当多。下面,只列出文件和目录的相关方法:方法描述getcwd()获取当前工作目录chdir(path)将当前的工作目录更改为指定的路径listdir(path=None)列出指定目录中的文件名。如果 path 为 None,则使用 path='.'。mkdir(path,mode=511,*,dir_fd=None)创建目录makedirs(name,exist_ok=False)递归创建多层目录rename(src,dst,src_dir_fd=None,dst_dir_fd=None)重命名文件或目录remove(path,dir_fd=None)删除文件rmdir(path,dir_fd=None)删除目录removedirs(name)递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空抛出异常。walk(top,topdown=True,onerror=None,followlinks=False)遍历 top 路径下的所有子目录,返回一个包含 3 个元素的元组:(dirpath,dirnames,filenames)。os.curdir指代当前目录('.')os.pardir指代上一级目录('..')os.sep路径分割符(Windows 为 '',Linux 为 '/')os.linesep行终止符(Windows 为 'rn',Linux 为 'n')os.name指代当前使用的操作系统(Windows 系统为 'nt',Linux 为 'posix')简单认识 os 模块后,来看如何使用 - 输出当前的操作系统:>>> import os>>> os.name # 操作系统'posix'如果是 posix,说明系统是 Linux;如果是 nt,则是 Windows 系统。

获取当前工作目录

要获取当前工作目录,有两种方式:getcwd():以 unicode 字符串的形式返回getcwdb():以 bytes 字符串的形式返回>>> os.getcwd()'/home/wang/workspace'>>>>>> os.getcwdb()b'/home/wang/workspace'

更改当前工作目录

可以使用 chdir() 更改当前工作目录:>>> os.getcwd() # 更改前'/home/wang/workspace'>>>>>> os.chdir("/etc") # 更改当前工作目录>>>>>> os.getcwd() # 更改后'/etc'注意: 在 Windows 中,经常也会使用反斜杠(),这时使用转义序列()更安全。

列出文件和目录

目录中的所有文件和子目录可以使用 listdir() 列出:>>> os.listdir('/') # 列出根目录 / 中的文件和子目录['boot','dev','home','proc','run','sys','var','etc','root','tmp','usr','bin','sbin','lib','lib64','media','mnt','opt','srv']>>>>>> os.getcwd()'/home/wang/workspace'>>> os.listdir() # 列出当前目录中的文件和子目录['python','README.txt']注意: 如果没有指定路径,将从当前目录返回。

创建目录

可以使用 mkdir() 创建目录:>>> os.listdir() # 创建前['python','README.txt']>>>>>> os.mkdir("PHP") # 在当前路径下,创建名为 PHP 的目录>>>>>> os.listdir() # 创建后['python','README.txt','PHP']注意: 如果未指定完整路径,则将在当前目录中创建。

重命名文件或目录

rename() 可以重命名文件或目录,第一个参数为旧名称,第二个参数为新名称:>>> os.listdir() # 重命名前['python','PHP']>>>>>> os.rename("README.txt","Notice.txt") # 重命名文件>>> os.rename("PHP","Java") # 重命名空目录>>> os.rename("python","Py") # 重命名非空目录>>>>>> os.listdir() # 重命名后['Notice.txt','Java','Py']可以看到,无论目录是否为空,都可以重命名成功。

删除文件或目录

可以使用 remove() 删除文件,使用 rmdir() 删除空目录:>>> os.listdir() # 删除前['Notice.txt','Py']>>>>>> os.remove("Notice.txt") # 删除文件>>> os.rmdir("Java") # 删除空目录>>>>>> os.listdir() # 删除后['Py']注意: rmdir() 只能删除空目录,无法删除非空目录。否则,会引发 OSError。要删除非空目录,需要借助 shutil 模块,使用 rmtree():>>> os.listdir()['Py']>>>>>> os.rmdir("Py") # 无法删除非空目录...OSError: [Errno 39] Directory not empty: 'Py'>>>>>> import shutil>>> shutil.rmtree("Py") # 删除非空目录>>>>>> os.listdir()[]但是,复制、移动文件的相关函数居然在 os 模块中不存在!原因是复制文件并非由操作系统提供的系统调用。幸运的是,shutil 模块提供了 copy()、move() 相关的函数,还可以在 shutil 模块中找到很多实用函数,它们可以看做是 os 模块的补充。

遍历目录

walk() 是遍历目录常用的方法,它返回一个包含 3 个元素的元组:(dirpath,filenames):dirpath:以字符串形式返回该目录下所有的绝对路径dirnames:以列表形式返回每一个绝对路径下的目录filesnames:以列表形式返回该路径下所有文件使用命令 tree,以树状图列出目录的内容:[wang@localhost workspace]$ tree.├── python│ ├── Notice.txt│ └── os│ ├── test2.py│ └── test.py└── README.txt2 directories,4 files使用 walk() 方法:>>> for root,dirs,files in os.walk("/home/wang/workspace"):... print(root)... print(dirs)... print(files)... print().../home/wang/workspace['python']['README.txt']/home/wang/workspace/python['os']['Notice.txt']/home/wang/workspace/python/os[]['test.py','test2.py']登录后自动展开
意见反馈 常见问题 官方微信 返回顶部