Python os模块详解

与目录相关的os模块函数
与目录相关的函数如下:
os.getcwd():获取当前目录。
os.chdir(path):改变当前目录。
os.fchdir(fd):通过文件描述利改变当前目录。该函数与上一个函数的功能基本相似,但该函数以文件描述符为参数代表目录。
以下程序测试了与目录相关的函数的用法:
importos
#获取当前目录
print(os.getcwd())#G:\publish\codes\12.7
#改变当前目录
os.chdir('../12.6')
#再次获取当前目录
print(os.getcwd())#G:\publish\codes\12.6上述程序示范了使用情况 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 子目录。
以下程序展示了如何创建目录:
importos 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 目录。以下程序显示了如何删除目录:
importos 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 目录。
以下程序显示了如何重命名目录:
importos path='my_dir' #直接重命名当前目录中的子目录 os.rename(path,'your_dir') path="abc/xyz/wawa" #递归重命名子目录 os.renames(path,'foo/bar/haha')
在上述程序中排名第一 5 当前目录下的行代码直接重新命名 my_dir 子目录将被重新命名为子目录 your_dir;第 8 行代码执行递归重命名,程序将 wawa 重命名为 haba,将 xyz 重命名为 bar,将 abc 重命名为 foo。
与权限相关的os模块函数
与权限有关的函数如下:
os.access(path, mode):检查 path 相应的文件或目录是否有指定的权限。函数的第二个参数可能是以下四个状态值的一个或多个值:
os.F_OK:判断它是否存在。
os.R_OK:判断是否可读。
os.W_OK:判断是否可以写。
os.X_OK:判断是否可执行。
例如,以下程序:
importos
#判断当前目录的权限
ret=os.access('.',os.F_OK|os.R_OK|os.W_OK|os.X_OK)
print("os.F_OK|os.R_OK|os.W_OK|os.X_OK-返回值:",ret)
#判断os.access_test.py文件的权限
ret=os.access('os.access_test.py',os.F_OK|os.R_OK|os.W_OK)
print("os.F_OK|os.R_OK|os.W_OK-返回值:",ret)上述程序判断了当前目录和当前文件的权限,并特别将该文件设置为只读。运行此程序时,可以看到以下输出结果:
os.F_OK|os.R_OK|os.W_OK|os.X_OK-返回值:True os.F_OK|os.R_OK|os.W_OK-返回值:False
