Python学习-OS模块常用方法整理

ps: 知识点主要来自菜鸟教程网站和Python官方文档
OS模块提供了非常丰富的方法来处理文件和目录

  • 1、os.access(path.mode):检验权限模式
    os.access()方法使用当前的uid/gid(用户ID/组ID)访问路径。大部分操作使用有效的uid/gid,因此运行环境可以在suid/sgid环境尝试。
    (除了一般的user id 和group id外,还有两个称之为effective 的id,就是有效id,上面的四个id表示为:uid,gid,euid,egid)
    (SUID的作用:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。)
    (SUID的优先级比SGID高,当一个可执行程序设置了SUID,则SGID会自动变成相应的egid。)
    参数:
    path -> 用来监测是否有访问权限的路径,可以是字符串、字节或者类似路径的对象(变量)
    mode ->
    为 os.F_OK,测试 path是否存在
    为 os.R_OK,测试 path是否可读
    为 os.W_OK,测试 path是否可写
    为 os.X_OK,测试 path是否可执行
    返回值:如果允许访问则返回True,否则返回False。
import os
# 假定 D:\Python3菜鸟教程\os_module_access_test.txt 文件存在,并有读写权限
a = 'D:\\Python3菜鸟教程\\os_module_access_test.txt'
ret_f = os.access(a,os.F_OK)
print('F_OK 的返回值: {}'.format(ret_f))    # 结果: F_OK 的返回值: True
ret_r = os.access(a,os.R_OK)
print('R_OK 的返回值: {}'.format(ret_r))    # 结果: R_OK 的返回值: True
ret_w = os.access(a,os.W_OK)
print('W_OK 的返回值: {}'.format(ret_w))    # 结果: W_OK 的返回值: True
ret_x = os.access(a,os.X_OK)
print('X_OK 的返回值: {}'.format(ret_x))    # 结果: X_OK 的返回值: True
  • 2、os.getcwd():返回当前工作目录
  • 3、os.getcwd():返回一个当前工作目录的Unicode对象
  • 4、os.chdir(path)方法:改变当前工作目录到指定的路径,参数path为要切换到的新路径
    返回值:如果允许访问则返回True,否则返回False
import os
path = 'D:\\Python3菜鸟教程\\test'
# 查看当前工作目录
retval = os.getcwd()
print(retval)   # 结果:D:\Python3菜鸟教程
# 修改当前工作目录
os.chdir(path)
# 查看修改后的工作路径
print(os.getcwd())  # 结果:D:\Python3菜鸟教程\test
# 改回原来的路径
os.chdir('D:\\Python3菜鸟教程')
print(os.getcwd())  # 结果:D:\Python3菜鸟教程
  • 5、os.chroot(path):改变当前进程的根目录
  • 6、os.listdir(path):返回path指定的文件夹包含的文件或者文件夹的名字的列表,这个列表以字母来排序,它不包括’.‘和’…’,即使它在文件夹中。
import os
path = 'D:\\Python3菜鸟教程'
dirs = os.listdir(path)
print(type(dirs),dirs)  #  ['.idea', 'os_module_access_test.txt', 'OS_module_learn.py', 'test', 'venv', '格式化输出.py']
for i in dirs:
    print(i)
  • 7、os.mkdir(path[,mode]):以数字mode创建一个名为path的文件夹,默认的mode是0777(八进制)。

  • 8、os.makedirs(path[,mode]):递归文件夹创建函数,类似mkdir(),但创建的所有intermediate-level(中级水平)文件夹需要包含子文件夹。

  • 9、os.open(file,flags[,mode]):用于打开一个文件,并且设置需要的打开选项,mode参数是可选的,默认为0777。
    参数:
    file -> 要打开的文件
    flags -> 该参数可以是以下选项,多个使用"|"隔开:
    os.O_RDONLY: 以只读的方式打开
    os.O_WRONLY: 以只写的方式打开
    os.O_RDWR : 以读写的方式打开
    os.O_NONBLOCK: 打开时不阻塞
    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: 不追踪软链接
    返回值:返回新打开文件的描述符

  • 10、os.write(fd,str):写入字符串到文件描述符fd中,返回实际写入的字符串长度。

  • 11、os.close(fd):关闭文件描述符fd。

  • 12、os.close(fd_low,fd_high):关闭所有文件描述符,从fd_low(包含)到fd_high(不包含),错误会忽略。

import os
# 打开文件
fd = os.open('D:\\Python3菜鸟教程\\os_module_open_test.txt',os.O_RDWR|os.O_CREAT)
# 写入字符串
os.write(fd,str.encode('This is test.'))
# 关闭文件
os.close(fd)
print('文件已关闭。')
  • 10、os.write(fd,str):写入字符串到文件描述符fd中,返回实际写入的字符串长度。
  • 11、os.close(fd):关闭文件描述符fd
  • 12、os.close(fd_low,fd_high):关闭所有文件描述符,从fd_low(包含)到fd_high(不包含),错误会忽略。
import os
# 打开文件
fd = os.open('D:\\Python3菜鸟教程\\os_module_open_test.txt',os.O_RDWR|os.O_CREAT)
# 写入字符串
os.write(fd,str.encode('This is test.'))
# 关闭文件
os.close(fd)
print('文件已关闭。')
  • 13、os.read(fd,n):从文件描述符fd中读取最多n个字节,返回包含读取字节的字符串,若文件描述符fd对应文件已达到结尾, 则返回一个空字符串。

  • 14、os.remove(path):删除路径为path的文件。如果path是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。

  • 15、os.removedirs(path):递归删除目录

  • 16、os.rmdir(path):删除path指定的空目录,如果目录非空,则抛出一个OSError异常。

  • 17、os.rename(src,dst):重命名文件或目录,从src到dst.

  • 18、os.rename(old,new)递归地对目录进行更名,也可以对文件进行更名。

  • 19、os.pardir():获取当前目录的父目录,以字符串形式显示目录名。

  • 20、os.path模块:获取文件属性信息
    os.path模块常用的方法:
    方法 -> 说明
    os.path.abspath(path) -> 返回绝对路径
    os.path.basename(path) -> 返回文件名
    os.path.commonprefix(list) -> 返回list(多个路径)中,所有path共有的最长的路径(commonprefix通用前缀)
    os.path.dirname(path) -> 返回文件路径
    os.path.exists(path) -> 路径存在则返回True,路径损坏返回False
    os.path.lexists -> 路径存在则返回True,路径损坏也返回True
    os.path.expanduser(path) -> 把path中包含的""和"user"转换成用户目录(expand扩大)
    os.path.expandvars(path) -> 根据环境变量的值替换path中包含的" n a m e " 和 " name"和" name""{name}"
    os.path.getatime(path) -> 返回最近访问时间(浮点型秒数)
    os.path.getmtime(path) -> 返回最近文件修改时间
    os.path.getctime(path) -> 返回文件 path 创建时间
    os.path.getsize(path) -> 返回文件大小,如果文件不存在就返回错误
    os.path.isabs(path) -> 判断是否为绝对路径
    os.path.isfile(path) -> 判断路径是否为文件
    os.path.isdir(path) -> 判断路径是否为目录
    os.path.islink(path) -> 判断路径是否为链接
    os.path.ismount(path) -> 判断路径是否为挂载点
    os.path.join(path1[, path2[, …]]) -> 把目录和文件名合成一个路径
    os.path.normcase(path) -> 转换path的大小写和斜杠
    os.path.normpath(path) -> 规范path字符串形式
    os.path.realpath(path) -> 返回path的真实路径
    os.path.relpath(path[, start]) -> 从start开始计算相对路径
    os.path.samefile(path1, path2) -> 判断目录或文件是否相同
    os.path.sameopenfile(fp1, fp2) -> 判断fp1和fp2是否指向同一文件
    os.path.samestat(stat1, stat2) -> 判断stat tuple stat1和stat2是否指向同一个文件
    os.path.split(path) -> 把路径分割成 dirname 和 basename,返回一个元组
    os.path.splitdrive(path) -> 一般用在 windows 下,返回驱动器名和路径组成的元组
    os.path.splitext(path) -> 分割路径中的文件名与拓展名
    os.path.splitunc(path) -> 把路径分割为加载点与文件
    os.path.walk(path, visit, arg) -> 遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数
    os.path.supports_unicode_filenames -> 设置是否支持unicode路径名

  • dir()方法对于os等比较大的模块很有用,可以查看模块包含的方法和变量属性等,比如dir(os)返回os模块功能的列表

import os
a = dir(os)
for i in a:
    print(i)

你可能感兴趣的:(Python学习)