欢迎来到赛兔子家园

Python os模块详解

除前面章节介绍的各种函数之外,os 模块还提供了大量操作文件和目录的函数,本节将介绍 os 模块下常用的函数。
1、os模块与目录相关的函数
与目录相关的函数如下:
os.getcwd():获取当前目录。
os.chdir(path):改变当前目录。
os.fchdir(fd):通过文件描述利改变当前目录。该函数与上一个函数的功能基本相似,只是该函数以文件描述符作为参数来代表目录。
下面程序测试了与目录相关的函数的用法:
import  os
# 获取当前目录
print(os.getcwd())
# 改变当前目录
os.chdir("../../../workbook")
# 再次获取当前目录
print(os.getcwd())

上面程序示范了使用 getcwd() 来获取当前目录,也示范了使用 chdir() 来改变当前目录。

os.chroot(path):改变当前进程的根目录。
os.listdir(path):返回 path 对应目录下的所有文件和子目录。
os.mkdir(path[, mode]):创建 path 对应的目录,其中 mode 用于指定该目录的权限。该 mode参数代表一个 UNIX 风格的权限,比如 0o777 代表所有者可读/可写/可执行、组用户可读/可写/可执行、其他用户可读/可写/可执行。
os.makedirs(path[, mode]):其作用类似于 mkdir(),但该函数的功能更加强大,它可以边归创建目录。比如要创建 abc/xyz/wawa 目录,如果在当前目录下没有 abc 目录,那么使用 mkdir() 函数就会报错,而使用 makedirs() 函数则会先创建 abc,然后在其中创建 xyz 子目录,最后在 xyz 子目录下创建 wawa 子目录。

如下程序示范了如何创建目录: 

import  os
path = "my_dir"
# 直接在当前目录下创建目录
os.mkdir(path,0o755)
path = "abc/xyz/wawa"
# 递归创建目录
os.makedirs(path,0o755)

正如从上面代码所看到的,直接在当前目录下创建 mydir 子目录,因此可以使用 mkdir() 函数创建;需要程序递归创建 abc/xyz/wawa 目录,因此使用 makedirs() 函数。
os.rmdir(path):删除 path 对应的空目录。如果目录非空,则抛出一个 OSError 异常。程序可以先用 os.remove() 函数删除文件。
os.removedirs(path):边归删除目录。其功能类似于 rmdir(),但该函数可以递归删除 abc/xyz/wawa 目录,它会从 wawa 子目录开始删除,然后删除 xyz 子目录,最后删除 abc 目录。

如下程序示范了如何删除目录: 

import  os
path = "my_dir"
# 直接删除当前目录下的子目录
os.rmdir(path)
path = "abc/xyz/wawa"
# 递归删除子目录
os.removedirs(path)
上面程序中第 5 行代码使用 rmdir() 函数删除当前目录下的 my_dir 子目录,该函数不会执行递归删除;第 8 行代码使用 removedirs() 函数删除 abc/xyz/wawa 目录,该函数会执行递归删除,它会先删除 wawa 子目录,然后删除 xyz 子目录,最后才删除 abc 目录。
os.rename(src, dst):重命名文件或目录,将 src 重名为 dst。
os.renames(old, new):对文件或目录进行递归重命名。其功能类似于 rename(),但该函数可以递归重命名 abc/xyz/wawa 目录,它会从 wawa 子目录开始重命名,然后重命名 xyz 子目录,最后重命名 abc 目录。
如下程序示范了如何重命名目录: 
import  os
# 直接重命名当前目录下的子目录
path = "your_dir"
os.rename(path,"my_dir") #your_dir重命名my_dir
path = "my_package/foo/bar"
# 递归重命名子目录
os.renames(path,'package_my/my_foo/my_bar') 

上面程序中第 5 行代码直接重命名当前目录下的 your_dir 子目录,程序会将该子目录重命名为 my_dir;第 8 行代码则执行递归重命名,程序会将 my_package/foo/bar 重命名为 ,将 my_package重命名package_my,将 foo 重命名为 my_foo,将bar重命名my_bay。

posted on 2024-12-30 10:46  赛兔子  阅读(318)  评论(0)    收藏  举报

导航