Python基础学习(九)OS文件/目录方法

目录

一、os.access() 方法

二、os.chdir()

三、os.getcwd()

四、os.getcwdb()

五、 os.chflags()

六、os.chmod()

七、os.chown()

八、 os.chroot()

九、os.close()、os.write()、os.read()

1、os.close()

2、os.write()

3、os.read()

十、os.closeranges()


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/python3

import 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 - 返回值 True
R_OK - 返回值 True
W_OK - 返回值 True
X_OK - 返回值 False

二、os.chdir()

用于改变文件路径,从当前目录移至指定的新目录。

语法格式:os.chdir(path) 

参数:path 指定文件的新路径

返回值:此方法不返回任何值。它抛出FileNotFoundError如果没有找到指定的路径 

实例:

#!/usr/bin/python3

import os, sys

path = "D:/project/tmp"

# 查看当前工作目录
retval = os.getcwd()
print ("当前工作目录为 %s" % retval)

# 修改当前工作目录
ret = os.chdir( path )
print ("是否允许访问 --结果:%s" % ret)

# 查看修改后的工作目录
retval = os.getcwd()

print ("目录修改成功 %s" % retval)

输出:

当前工作目录为 D:\project\Python
是否允许访问 --结果:None
目录修改成功 D:\project\tmp

三、os.getcwd()

返回当前目录。

语法格式:os.getcwd()

参数:

返回值:当前访问路径

四、os.getcwdb()

语法格式:os.getcwdb()

参数:

返回值:当前访问路径的Unicode格式

实例:

import os, sys


#当前目录为D:\project\tmp
retvalb = 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/python3

import os,stat

path = "/tmp/foo.txt"

# 为文件设置标记,使得它不能被重命名和删除
flags = stat.SF_NOUNLINK
retval = os.chflags( path, flags )
print ("返回值: %s" % retval)

返回:

 返回值:None

在Windows系统下执行返回:

Traceback (most recent call last):
  File "D:\project\Python\test_os.py", line 34, in <module>
    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: 其他用户有执行权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/python3

import 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/python3

import os, sys

# 假定 /tmp/foo.txt 文件存在.
# 设置所有者 ID 为 100 
os.chown("/tmp/foo.txt", 100, -1)

print ("修改权限成功!!")

返回:

修改权限成功!!

八、 os.chroot()

用于修改当前进程根目录为指定目录,需要管理员权限。只支持UNIX系统下使用。

语法格式:os.chroot(path)

参数:path 指定根目录的新目录

返回值:

实例:

#!/usr/bin/python3

import os, sys

# 设置根目录为 /tmp

os.chroot("/tmp")

print ("修改根目录成功!!")

返回:

修改根目录成功!! 

九、os.close()、os.write()、os.read()

1、os.close()

用于关闭文件描述符fd。

语法格式:os.close(fd)

参数: fd--文件描述符

返回值:无

2、os.write()

用于写文件。

语法格式:os.write(fd, str)

参数:fd --文件描述符  str--写入的字符串(本机安装Python 3.9版本,只支持byte类型)

返回值:返回字符串长度。

3、os.read()

用于读取文件。

语法格式:os.read(fd, n)

参数: fd--文件描述符   n--读取字符长度

返回值:字符串

实例:

# 打开文件
fd = os.open( "test_os.txt", os.O_RDWR|os.O_CREAT )

#  写入字符串
len = os.write(fd, bytes("This is test", 'UTF-8'))
print("写入位数为:", len)

#读文件
ret = os.read(fd, 12)
print("文件内容:%s" % ret)

# 关闭文件
os.close( fd )

print ("关闭文件成功!!")

输出:

写入位数为: 12
文件内容:b''
关闭文件成功!!

十、os.closeranges()

用于关闭所有的 文本描述符。

语法:os.closeranges(fd_low, fd_high)

参数:fd_low --最小文本描述符  fd_high --最大文本描述符

返回值:无。

相当于:

for fd in xrange(fd_low, fd_high):
    try:
        os.close(fd)
    except OSError:
        pass

参考菜鸟教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值