Python os.access() 方法
语法:
access()方法语法格式如下
os.access(path, mode):
path -- 要用来检测是否有访问权限的路径。
mode -- mode为F_OK,测试存在的路径,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多。
"""
os.F_OK: 作为access()的mode参数,测试path是否存在。
os.R_OK: 包含在access()的mode参数中 , 测试path是否可读。
os.W_OK 包含在access()的mode参数中 , 测试path是否可写。
os.X_OK 包含在access()的mode参数中 ,测试path是否可执行。
"""
import os, sys
ret = os.access("files/os_sys.txt", os.F_OK)
print("F_OK - 返回值 %s"% ret)
ret = os.access("files/os_sys.txt", os.R_OK)
print("R_OK - 返回值 %s"% ret)
ret = os.access("files/os_sys.txt", os.W_OK)
print("W_OK - 返回值 %s"% ret)
ret = os.access("files/os_sys.txt", os.X_OK)
print("X_OK - 返回值 %s"% ret)
os.chdir() 方法用于改变当前工作目录到指定的路径
语法
chdir()方法语法格式:os.chdir(path)
参数 - path -- 要切换到的新路径。
返回值 - 如果允许访问返回 True , 否则返回False
path = "files/os_sys.txt"
查看当前工作目录
retval = os.getcwd()
print ("当前工作目录为 %s" % retval)
修改当前工作目录
os.chdir(path)
查看修改后的工作目录
retval = os.getcwd()
print ("目录修改成功 %s" % retval)
概述
os.chflags() 方法用于设置路径的标记为数字标记。多个标记可以使用 OR 来组合起来。
只支持在 Unix 下使用。
语法
chflags()方法语法格式: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: 快照文件(超级用户可设)
"""
import os,stat
path = "files/os_sys.txt"
为文件设置标记,使得它不能被重命名和删除
flags = stat.SF_NOUNLINK
retval = os.chflags( path, flags )
print ("返回值: %s" % retval)
概述
os.chmod() 方法用于更改文件或目录的权限。
语法
chmod()方法语法格式:os.chmod(path, mode)
该方式没有返回值
"""
参数
path -- 文件名路径或目录路径。
flags -- 可用以下选项按位或操作生成, 目录的读权限表示可以获取目录里文件名列表, ,执行权限表示可以把工作目录切换到此目录 ,删除添加目录里的文件必须同时有写和执行权限 ,文件权限以用户id->组id->其它顺序检验,最先匹配的允许或禁止权限被应用。
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下取消只读
"""
os.chmod("files/os_sys.txt", stat.S_IXGRP)
设置文件可以被其他用户写入
os.chmod("files/os_sys.txt", stat.S_IWOTH)
print ("修改成功!!")
概述
os.dup2() 方法用于将一个文件描述符 fd 复制到另一个 fd2。
Unix, Windows 上可用。
语法
dup2()方法语法格式:os.dup2(fd, fd2);
参数
fd -- 要被复制的文件描述符
fd2 -- 复制的文件描述符
f = open('txt', 'a')
将这个文件描述符代表的文件,传递给 1 描述符指向的文件(也就是 stdout)
os.dup2(f.fileno(), 1)
关闭文件
f.close()
print 输出到标准输出流,就是文件描述符1
print('runoob')
print('google')
概述
os.fchown() 方法用于修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定。
Unix上可用。
语法
fchown()方法语法格式:os.fchown(fd, uid, gid)
参数
fd -- 文件描述符
uid -- 文件所有者的用户id
gid -- 文件所有者的用户组id
打开文件 "/tmp/foo.txt"
fd = os.open("files/os_sys.txt", os.O_RDONLY)
设置文件的用户 id 为 100
os.fchown(fd, 100, -1)
设置文件的用户组 id 为 50
os.fchown(fd, -1, 50)
print("修改权限成功!!")
关闭文件
os.close(fd)
概述
os.ftruncate() 裁剪文件描述符fd对应的文件, 它最大不能超过文件大小。
Unix上可用。
语法
ftruncate()方法语法格式:os.ftruncate(fd, length)
参数
fd -- 文件的描述符。
length -- 要裁剪文件大小。
打开文件
fd = os.open( "files/os_sys.txt", os.O_RDWR|os.O_CREAT )
写入字符串
os.write(fd, "This is test - This is test")
使用 ftruncate() 方法
os.ftruncate(fd, 10)
读取内容
os.lseek(fd, 0, 0)
str = os.read(fd, 100)
print ("读取的字符串是 : ", str)
关闭文件
os.close( fd)
print ("关闭文件成功!!")
概述
os.makedev() 方法用于以major和minor设备号组成一个原始设备号。
语法
makedev()方法语法格式:os.makedev(major, minor)
参数
major -- Major 设备号
minor -- inor 设备号
path = "files/os_sys.txt"
获取元组
info = os.lstat(path)
获取 major 和 minor 设备号
major_dnum = os.major(info.st_dev)
minor_dnum = os.minor(info.st_dev)
print ("Major 设备号 :", major_dnum)
print ("Minor 设备号 :", minor_dnum)
生成设备号
dev_num = os.makedev(major_dnum, minor_dnum)
print ("设备号 :", dev_num)
概述
os.pathconf() 方法用于返回一个打开的文件的系统配置信息。
Unix 平台下可用。
语法
fpathconf()方法语法格式:os.fpathconf(fd, name)
"""
fd -- 文件描述符
name -- 检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)。
一些平台也定义了一些额外的名字。这些名字在主操作系统上pathconf_names的字典中。对于不在pathconf_names中的配置变量,传递一个数字作为名字,也是可以接受的。
"""
打开文件
fd = os.open( "files/os_sys.txt", os.O_RDWR|os.O_CREAT )
print ("%s" % os.pathconf_names)
获取文件最大连接数
no = os.fpathconf(fd, 'PC_LINK_MAX')
print ("Maximum number of links to the file. :%d" % no)
获取文件名最大长度
no = os.fpathconf(fd, 'PC_NAME_MAX')
print ("Maximum length of a filename :%d" % no)
关闭文件
os.close( fd)
print ("关闭文件成功!!")
概述
os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。
语法
rename()方法语法格式:os.rename(src, dst)
参数
src -- 要修改的目录名
dst -- 修改后的目录名
列出目录
print ("目录为: %s"%os.listdir(os.getcwd()))
重命名
os.rename("test","test2")
print ("重命名成功。")
列出重命名后的目录
print ("目录为: %s" %os.listdir(os.getcwd()))