python的模块提供了许多文件管理方法_Python 文件和目录管理(os)

简述

目录(或文件夹)是文件和子目录的集合

在 Linux 中,操作系统提供了很多的命令(例如:ls、cd),用于文件和目录管理。在 Python 中,有一个 os 模块,也提供了许多便利的方法来管理文件和目录。

简述

os 模块

获取当前工作目录

更改当前工作目录

列出文件和目录

创建目录

重命名文件或目录

删除文件或目录

遍历目录

版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820

os 模块

os:语义为操作系统。所以,os 模块提供的肯定是操作系统相关的功能了(与具体的平台无关)。

如果用 dir() 查看 os,会发现内容相当多。下面,只列出文件和目录的相关方法:

方法

描述

getcwd()

获取当前工作目录

chdir(path)

将当前的工作目录更改为指定的路径

listdir(path=None)

列出指定目录中的文件名。如果 path 为 None,则使用 path="."。

mkdir(path, mode=511, *, dir_fd=None)

创建目录

makedirs(name, mode=511, 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, οnerrοr=None, followlinks=False)

遍历 top 路径下的所有子目录,返回一个包含 3 个元素的元组:(dirpath, dirnames, filenames)。

os.curdir

指代当前目录(".")

os.pardir

指代上一级目录("..")

os.sep

路径分割符(Windows 为 "\\",Linux 为 "/")

os.linesep

行终止符(Windows 为 "\r\n",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", "README.txt", "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", "Java", "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, dirnames, filenames):

dirpath:以字符串形式返回该目录下所有的绝对路径

dirnames:以列表形式返回每一个绝对路径下的目录

filesnames:以列表形式返回该路径下所有文件

使用命令 tree,以树状图列出目录的内容:

[wang@localhost workspace]$ tree

.

├── python

│ ├── Notice.txt

│ └── os

│ ├── test2.py

│ └── test.py

└── README.txt

2 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"]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值