Python 使用OS对象
文章目录
一、使用方法access()
在Python程序中,方法access()的功能是检验对当前文件的操作权限模式。方法access()使用当前的uid/gid尝试访问指定的路径。使用方法access()的语法格式如下所示:
os.access (Patn, mode);
(1)参数“patn“ :用于检测是否有访问权限的路径。
(2) 参数“mode“:表示测试当前路径的模式,主要包括如下四种取值模式。
● os.F_OK: 测试 path是否存在。
● os.R_OK: 测试 path是否可读。
● os.W_OK: 测试 path是否可写。
● os.X_OK: 测试 path是否可执行。
方法 access()有返回值,如果允许访问则返回 True,否则返回False。
例如在下面的实例代码中,演示了使用方法access()获取文件操作权限的过程,具体实现代码如下所示:
import os,sys #假定123/456.txt文件存在,并设置有读/写权限
ret = os.access("123/456.txt", os.F_OK)
print ("F_OK —— 返回值 %s"% ret) #显示文件是否存在
ret = os.access("123/456.txt", os.R_OK)
print("R_OK —— 返回值%s"% ret) #显示文件是否可读
ret = os.access ("123/456.txt", os.W_OK) #检测文件是否可写
print ("W_OK —— 返回值%s"% ret) #显示文件是否可写
ret = os.access("123/456.txt", os.X_OK)
print ("X_OK —— 返回值%s"% ret) #显示文件是否可执行
在运行上述实例代码之前,需要在该文件的目录下创建一个名为“123”的文件夹,然后在里面创建一个文本文件“456.txt”。在上述代码中,使用方法access()获取了对文件“123/456 txt”的操作权限,执行后会输出:
二、使用方法chdir()
在Python程序中,方法chdir()的功能是修改当前工作目录到指定路径的过程 。使用方法chdir()的语法格式如下所示:
os.chdir(path)
上述函数参数“path”表示要切换到的新路径。方法chdir()有返回值,如果允许修改则返回 True,否则返回False 。在下面的实例代码中,演示了使用方法chdir()修改当前工作目录到指定路径的过程:
import os,sys
path = "123" #设置目录变量的初始值
retval = os.getcwd() #获取当前文件的工作目录
print("文件的当前工作目录为%s" % retval) #显示当前文件的工作目录
os.chdir( path ) #修改当前工作目录
#查看修改后的工作目录
retval =os.getcwd() #再次获取当前文件的工作目录
print("”目录修改成功%s" % retval)
在上述实例代码中,首先使用方法getcwd()获取了当前文件的工作目录,然后使用方法chdir()修改当前工作目录到指定路径“123”。执行后会输出:
三、使用方法 chmod()
在Python程序中,方法chmod()的功能是修改文件或目录的权限。使用方法chmod()的语法格式如下所示。
os.chmod (path, flags)
方法 chmod()没有返回值,上述格式中参数的具体说明如下所
(1) path:文件名路径或目录路径。
(2) mode:表示不同的权限级别,可用下表所示的选项按位或操作生成。
选项名称 | 操作 |
---|---|
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 下取消只读 |
注意:目录的读权限表示可以获取目录里的文件名列表,执行权限表示可以把工作目承切换到此目录。删除添加目录里的文件必须同时有写和执行权限,文件权限以“用户id 一> 组id 一> 其地”顺序进行检验,最先匹配的允许或禁止权限被应用,意思是先匹配哪一个权限,就使用哪一个权限。
例如在下面的实例代码中,演示了使用方法chmod()修改文件或目录权限的过程。
import os, sys, stat #井假设123/456.txt 文件存在,设置文件可以通过用户组执行
os.chmod ("123/456.txt", stat.S_IXGRP)
os.chmod("123/456.txt", stat.S_IWOTH)#设置文件可以被其他用户写入
print ("修改成功 !!!!")
在上述实例代码中,使用方法chmod()将文件“123/456.xt”的权限修改为“stat.S_IWOTH"。执行后会输出:
四、打开、写入和关闭
在Python程序中,当想要操作一个文件或目录时,首先需要打开这个文件,然后才能执行写入或读取等操作,在操作完毕后一定要及时关闭操作。其中打开操作是通过方法open()实现的,写入操作是通过方法write()实现的,关闭操作是通过方法close()实现的。
1.方法open()
在Python程序中,方法open()的功能是打开一个文件,并且设置需要的打开选项。使用方法open()的语法格式如下所示。
os.open(file. flags[,mode]):
方法open()有返回值,返回新打开文件的描还付。上心八l H六中况明如下所示。
(1)参数“file”: 要打开的文件。
(2)参数“mode”: 可选参数,默认为0777
(3参数“flags”: 可以是如下表所示的选项值,多个选项之间使用“|”隔开。
操作 | 选项名称 |
---|---|
os.O_RDONLY | 以只读的方式打开 |
os.O_WRONLY | 以只写的方式打开 |
os.O_RDWR | 以读/写的方式打开 |
os.O_RNONBLOCK | 打开时不阻塞 |
os.O_ APPEND | 以追加的方式打开 |
os.O_CREAT | 创建并打开一个新文件 |
os.O_TRUNC | 打开一个文件并截断它的长度为零(必须有写权限) |
os.O_EXCL | 如果指定的文件存在,返回错误 |
os.O_SHLOCK | 自动获取共享锁 |
os.O_EXLOCK | 自动获取独立锁 |
os.O_DIRECT | 消除或减少缓存效果 |
os.O_ FSYNC | 强制同步写入 |
os.O_ NOFOLLOW | 不追踪软链接 |
2.方法write()
在Python程序中,方法write()的功能是写字符串到文件描述符fd中,返回实际写入的字符串长度。方法write()在UNIX系统中也是有效的,使用方法write()的语法格式如下所示。
os . write(fd,str)
●参数“fd”: 表示文件描述符;
●参数“str”: 表示写入的字符串。
方法write(有返回值,返回写入的实际位。
3.方法close()
在Python程序中,方法close()的功能是关闭指定文件的描述符fd。使用方法 close()的语法格式如下所示。
os.close(fd)
方法close()没有返回值,参数“fd”表示文件描述符。例如在下面的实例代码中,演示了使用方法 open()、write()和close()实现文件的打开、写入和关闭操作的过程。打开文件“456.txt”然后实现文件的打开、写入和关闭操作:
import os,sys
fd = os.open("456.txt",os.O_RDWR|os.O_CREAT) #打开文件
str = "Python学习进行中" #设置写入字符串变量
ret = os.write (fd,bytes(str, 'UTF-8'))
print (" 写入的位数为: ") #输出返回值
print (ret) #显示写入的位数
print (" 写入成功") #显示提示文本
os.close (fd) #关闭文件
print (" 关闭文件成功!!") #显示提示文本
在上述实例代码中,首先使用方法open()创建并打开了个名为 “456.txt”的文件,然后使用方法write()向这个文件中写入了文本“Python学习进行中”,最后通过方法close() 关闭了文件操作。执行后会输出:
五、打开、 读取和关闭
在Python程序中,方法read()的功能是从文件描述符fd中读取最多n个字节,返回包含读取字节的字符串,文件描述符fd对应文件已达到结尾,返回一个空字符串。使用方法read()的语法格式如下所示。
os.read(fd,n)
方法read()有返回值,返回包含读取字节的字符串。其中参数fd表示文件描述符,参数n表示读取的字节。例如在下面的实例代码中,演示了使用方法read(读取文件中指定字符的过程:
import os, sys
fd = os.open ("456.txt",os.O_RDWR) #以读写方式打开文件
ret = os.read(fd, 10) #读取文件中的10个字符
print (ret) #打印显示读取的内容
os.close (fd) #关闭文件
print (" 关闭文件成功!!")
在上述实例代码中,首先使用方法open()打开了一一个名为“456.txt”的文件,然后使用方法read()读取文件中的10个字符,最后通过方法close()关闭了文件操作。执行效果如图所示。
六、创建目录
在Python程序中,可以使用OS对象的内置方法创建文件夹目录。
1.使用方法mkdir()
在Python程序中,方法mkdir()的功能是以数字权限模式创建目录,默认的模式为0777(八进制)。
使用方法mkdir()的语法格式如下所示。
os .mkdir (path[,mode])
方法mkdir()有返回值,返回包含读取字节的字符串。其中参数path表示要创建的目录,参数mode表示要为目录设置的权限数字模式。例如在下面的实例代码中,演示了使用方法mkdir()创建一个目录的过程。
import os,sys
#设置变量path表示创建的目录
path = "top"
#执行创建目录操作
os.mkdir( path )
print ("目录已创建")
在上述实例代码中,使用方法mkdif()在实例文件的同级目录下新建一个目录“top”
2.使用方法makedirs()
在Pyhon程序中,方法makedirs()的功能是递归创建目录。功能和方法mkdir()类似,但是可以创建包含子目录的文件夹目录。使用方法makedirs()的语法格式如下所示。
os . makedirs (path, mode=0o777)
方法makedirs()有返回值,返回包含读取字节的字符串。其中参数path表示要递归创建的目录,参数mode表示要为目录设置的权限数字模式。例如在下面的实例代码中,演示了使用方法makedirs()创建一个目录的过程。
import os,sys
#设置变量path表示创建的目录
path = "python text\study"
os.makedirs(path);
print("路径被创建")
在上述代码中,使用方法makedirs()在实例文件的同级目录下新建包含子目录的目录“python text\study”。执行效果如下: