一. 简介
OS模块是 Python标准库中的一个重要模块,提供了与操作系统进行交互的功能。它允许你执行诸如文件和目录操作、环境变量管理、进程管理等任务。OS模块封装了许多系统调用,使得 Python程序可以跨平台运行。
接下来简单学习一下 OS模块中文件、目录的操作方法:os.access() 方法、os.chdir() 方法、os.chmod(path, mode)方法、os.chroot(path)方法、os.close(fd)方法、os.closerange(fd_low, fd_high)方法。
二. Python3 OS模块中的文件/目录方法
1. os.access() 方法、os.chdir() 方法
os.access() 方法使用当前的uid/gid尝试访问路径。大部分操作使用有效的 uid/gid, 因此运行环境可以在 suid/sgid 环境尝试。
os.access() 方法的语法格式如下:
os.access(path, mode);
参数:
path: 要用来检测是否有访问权限的路径。
mode: mode模式,不同的值测试不同的功能。
- os.F_OK: 作为access()的mode参数,测试path是否存在。
- os.R_OK: 包含在access()的mode参数中 , 测试path是否可读。
- os.W_OK 包含在access()的mode参数中 , 测试path是否可写。
- os.X_OK 包含在access()的mode参数中 ,测试path是否可执行。
举例如下:
#!/usr/bin/env python3
import os, sys
#假定 file.txt文件存在,并有读写权限
ret = os.access("file.txt", os.F_OK)
print("F_OK--返回值 %s"% ret)
ret = os.access("file.txt", os.R_OK)
print ("R_OK - 返回值 %s"% ret)
ret = os.access("file.txt", os.W_OK)
print ("W_OK - 返回值 %s"% ret)
ret = os.access("file.txt", os.X_OK)
print ("X_OK - 返回值 %s"% ret)
运行后结果如下:
F_OK--返回值 True
R_OK - 返回值 True
W_OK - 返回值 True
X_OK - 返回值 False
os.chdir() 方法用于改变当前工作目录到指定的路径。
chdir()方法语法格式如下:
os.chdir(path)
参数:path -- 要切换到的新路径。
举例如下:
#!/usr/bin/env python3
import os, sys
path = "/tmp"
#查看当前工作目录
ret = os.getcwd()
print("当前工作目录: %s"% ret)
#修改当前工作目录
os.chdir(path)
ret = os.getcwd()
print("目录修改成功 %s" % ret)
运行后结果如下:
当前工作目录: /home/wangtian/Code_Learns/python_codes
目录修改成功 /tmp
2. os.chmod(path, mode)方法
os.chmod() 方法用于更改文件或目录的权限。
chmod()方法语法格式如下:
os.chmod(path, mode)
参数
path -- 文件名路径或目录路径。
flags -- 可用以下选项按位或操作生成。
stat.S_IXOTH: 其他用户有执行权0o001
stat.S_IWOTH: 其他用户有写权限0o002
stat.S_IROTH: 其他用户有读权限0o004
stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007
stat.S_IXGRP: 组用户有执行权限0o010
stat.S_IWGRP: 组用户有写权限0o020
stat.S_IRGRP: 组用户有读权限0o040
stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070
stat.S_IXUSR: 拥有者具有执行权限0o100
stat.S_IWUSR: 拥有者具有写权限0o200
stat.S_IRUSR: 拥有者具有读权限0o400
stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700
stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000
stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000
stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000
stat.S_IREAD: windows下设为只读
stat.S_IWRITE: windows下取消只读
#!/usr/bin/env python3
import os, sys, stat
# 假定file.txt文件存在,设置文件可以通过用户组执行
os.chmod("file.txt", stat.S_IXGRP)
# 设置文件可以被其他用户写入
os.chmod("file.txt", stat.S_IWOTH)
print ("修改成功!!")
os.chown(path, uid, gid)方法
os.chown() 方法用于更改文件所有者,如果不修改可以设置为 -1, 你需要超级用户权限来执行权限修改操作。
只支持在 Unix 下使用。
chown()方法语法格式如下:
os.chown(path, uid, gid);
参数
-
path -- 设置权限的文件路径
-
uid -- 所属用户 ID
-
gid -- 所属用户组 ID
# 假定 file.txt 文件存在.
# 设置所有者 ID 为 100
os.chown("file.txt", 100, -1)
运行时需要 root权限。
3. os.chroot(path)方法、os.close(fd)方法、os.closerange(fd_low, fd_high)方法
os.chroot() 方法用于更改当前进程的根目录为指定的目录,使用该函数需要管理员权限。在 unix 中有效。
chroot()方法语法格式如下:
os.chroot(path);
path -- 要设置为根目录的目录。
举例如下:
#!/usr/bin/env python3
import os, sys, stat
# 设置根目录为 /tmp
os.chroot("/tmp")
运行时需要 root权限。
close()方法语法格式如下(其中,fd -- 文件描述符):
os.close(fd);
os.closerange() 方法用于关闭所有文件描述符 fd
closerange()方法语法格式如下:
os.closerange(fd_low, fd_high);
关闭所有文件描述符 fd,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略。
参数
-
fd_low -- 最小文件描述符
-
fd_high -- 最大文件描述符
该方法类似于:
for fd my_range(fd_low, fd_high):
try:
os.close(fd)
except OSError:
pass
举例如下:
#!/usr/bin/env python3
import os, sys
fd = os.open("file.txt", os.O_RDWR|os.O_CREAT)
os.write(fd, b'Python is a language')
os.closerange(fd, fd)
接下来继续学习 os模块目录与文件的操作方法。