目录
一、os.access() 方法
二、os.chdir()
三、os.getcwd()
四、os.getcwdb()
五、 os.chflags()
六、os.chmod()
七、os.chown()
八、 os.chroot()
OS模块提供了非常丰富的方法来处理文件和目录。下面介绍几种常用的方法:
一、os.access() 方法
用于检验是否具有权限。
语法格式:os.access(path, mode)
参数:
path:检验是否具有访问权限的路径。
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是否可执行。
返回值:允许访问则返回True 或,否则返回False
实例:
#!/usr/bin/python3import os, sys# 假定 /tmp/foo.txt 文件存在,并有读写权限ret = os.access("/tmp/foo.txt", os.F_OK)print ("F_OK - 返回值 %s"% ret)ret = os.access("/tmp/foo.txt", os.R_OK)print ("R_OK - 返回值 %s"% ret)ret = os.access("/tmp/foo.txt", os.W_OK)print ("W_OK - 返回值 %s"% ret)ret = os.access("/tmp/foo.txt", os.X_OK)print ("X_OK - 返回值 %s"% ret)
返回:
F_OK - 返回值 TrueR_OK - 返回值 TrueW_OK - 返回值 TrueX_OK - 返回值 False
二、os.chdir()
用于改变文件路径,从当前目录移至指定的新目录。
语法格式:os.chdir(path)
参数:path 指定文件的新路径
返回值:此方法不返回任何值。它抛出FileNotFoundError如果没有找到指定的路径
实例:
#!/usr/bin/python3import os, syspath = "D:/project/tmp"# 查看当前工作目录retval = os.getcwd()print ("当前工作目录为 %s" % retval)# 修改当前工作目录ret = os.chdir( path )print ("是否允许访问 --结果:%s" % ret)# 查看修改后的工作目录retval = os.getcwd()print ("目录修改成功 %s" % retval)
输出:
当前工作目录为 D:projectPython是否允许访问 --结果:None目录修改成功 D:projecttmp
三、os.getcwd()
返回当前目录。
语法格式:os.getcwd()
参数:无
返回值:当前访问路径
四、os.getcwdb()
语法格式:os.getcwdb()
参数:无
返回值:当前访问路径的Unicode格式
实例:
import os, sys#当前目录为D:projecttmpretvalb = os.getcwdb()print ("目录unicode为 %s" % retvalb)
输出:
目录unicode为 b'D:\project\tmp'
五、 os.chflags()
用于设置路径的标记为数字标记。只支持UNIX系统下使用。
语法格式:os.chflags(path, flags)
参数:
path:访问文件路径或目录路径
flags:可以有如下值:
stat.UF_NODUMP: 非转储文件stat.UF_IMMUTABLE: 文件是只读的stat.UF_APPEND: 文件只能追加内容stat.UF_NOUNlink: 文件不可删除stat.UF_OPAQUE: 目录不透明,需要通过联合堆栈查看stat.SF_ARCHIVED: 可存档文件(超级用户可设)stat.SF_IMMUTABLE: 文件是只读的(超级用户可设)stat.SF_APPEND: 文件只能追加内容(超级用户可设)stat.SF_NOUNlink: 文件不可删除(超级用户可设)stat.SF_SNAPSHOT: 快照文件(超级用户可设)
返回值:该方法无返回值。
实例:
#!/usr/bin/python3import os,statpath = "/tmp/foo.txt"# 为文件设置标记,使得它不能被重命名和删除flags = stat.SF_NOUNlinkretval = os.chflags( path, flags )print ("返回值: %s" % retval)
返回:
返回值:None
在Windows系统下执行返回:
Traceback (most recent call last):
File "D:projectPythontest_os.py", line 34, in
retval = os.chflags( path, flags )
AttributeError: module 'os' has no attribute 'chflags'
六、os.chmod()
用于修改文件或目录权限。只能在UNIX系统中使用。
语法格式:os.chmod(path, mode)
参数:
path:文件路径或目录
mode:按位或操作生成, 目录的读权限表示可以获取目录里文件名列表, ,执行权限表示可以把工作目录切换到此目录 ,删除添加目录里的文件必须同时有写和执行权限 ,文件权限以用户id->组id->其它顺序检验,最先匹配的允许或禁止权限被应用。可以有如下值:
stat.S_IXOTH: 其他用户有执行权0o001stat.S_IWOTH: 其他用户有写权限0o002stat.S_IROTH: 其他用户有读权限0o004stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007stat.S_IXGRP: 组用户有执行权限0o010stat.S_IWGRP: 组用户有写权限0o020stat.S_IRGRP: 组用户有读权限0o040stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070stat.S_IXUSR: 拥有者具有执行权限0o100stat.S_IWUSR: 拥有者具有写权限0o200stat.S_IRUSR: 拥有者具有读权限0o400stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000stat.S_IREAD: windows下设为只读stat.S_IWRITE: windows下取消只读
返回值:无
实例:
#!/usr/bin/python3import os, sys, stat# 假定 /tmp/foo.txt 文件存在,设置文件可以通过用户组执行os.chmod("/tmp/foo.txt", stat.S_IXGRP)# 设置文件可以被其他用户写入os.chmod("/tmp/foo.txt", stat.S_IWOTH)print ("修改成功!!")
返回:
修改成功!!
七、os.chown()
用于修改文件所有者,如果不修该可以设置为-1,需要有超级用户权限执行权限修改操作。只支持UNIX系统下使用。
语法格式:os.chown(path, uid, gid)
参数:
path:文件路径
uid:所属用户ID
gid: 所属用户组ID
返回值:无
实例:
!/usr/bin/python3import os, sys# 假定 /tmp/foo.txt 文件存在.# 设置所有者 ID 为 100 os.chown("/tmp/foo.txt", 100, -1)print ("修改权限成功!!")
返回:
修改权限成功!!
八、 os.chroot()
用于修改当前进程根目录为指定目录,需要管理员权限。只支持UNIX系统下使用。
语法格式:os.chroot(path)
参数:path 指定根目录的新目录
返回值:无
实例:
#!/usr/bin/python3import os, sys# 设置根目录为 /tmpos.chroot("/tmp")print ("修改根目录成功!!")
返回:
修改根目录成功!!
九、