总结8-08

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()))

你可能感兴趣的:(总结8-08)