Python 中的 os 模块总结

自古美人都是妖i 提交于 2020-02-27 00:46:10

Python 中的 os 模块

os.access() 检验权限模式

概述

os.access() 方法使用当前的uid/gid尝试访问路径。大部分操作使用有效的 uid/gid, 因此运行环境可以在 suid/sgid 环境尝试。

语法

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是否可执行。

返回值

如果允许访问返回 True , 否则返回False。

实例:


#!/usr/bin/python
# -*- coding: UTF-8 -*-

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() 方法用于改变当前工作目录到指定的路径。

语法

os.chdir(path)

参数

  • path -- 要切换到的新路径。

返回值

如果允许访问返回 True , 否则返回False。

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

path = "/tmp"
# 查看当前工作目录
retval = os.getcwd()
print "当前工作目录为 %s" % retval
# 修改当前工作目录
os.chdir( path )
# 查看修改后的工作目录
retval = os.getcwd()
print "目录修改成功 %s" % retval

以上程序输出结果为:
当前工作目录为 /www
目录修改成功 /tmp

os.chmod() 更改权限

概述

os.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下取消只读

返回值

该方法没有返回值。

实例

#!/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.getcwd() 返回当前工作目录

概述

os.getcwd() 方法用于返回当前工作目录。

语法

os.getcwd()

参数

返回值

返回当前进程的工作目录。

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 切换到 "/var/www/html" 目录
os.chdir("/var/www/html" )
# 打印当前目录
print "当前工作目录 : %s" % os.getcwd()
# 打开 "/tmp"
fd = os.open( "/tmp", os.O_RDONLY )
# 使用 os.fchdir() 方法修改目录
os.fchdir(fd)
# 打印当前目录
print "当前工作目录 : %s" % os.getcwd()
# 关闭文件
os.close( fd )

以上程序输出结果为:
当前工作目录 : /var/www/html
当前工作目录 : /tmp

os.makedirs() 用于递归创建目录

概述

os.makedirs() 方法用于递归创建目录。像 mkdir(), 但创建的所有intermediate-level文件夹需要包含子目录。

语法

os.makedirs(path, mode=0o777)

参数

  • path -- 需要递归创建的目录。

  • mode -- 权限模式。

返回值

该方法没有返回值。

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 创建的目录
path = "/tmp/home/monthly/daily"
os.makedirs( path, 0755 );
print "路径被创建"

以上程序输出结果为:
路径被创建

os.mkdir() 以数字权限模式创建目录

概述

os.mkdir() 方法用于以数字权限模式创建目录。默认的模式为 0777 (八进制)。

语法

os.mkdir(path[, mode])

参数

  • path -- 要创建的目录

  • mode -- 要为目录设置的权限数字模式

返回值

该方法没有返回值。

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 创建的目录
path = "/tmp/home/monthly/daily/hourly"
os.mkdir( path, 0755 );
print "目录已创建"

以上程序输出结果为:
目录已创建

os.remove() 删除指定路径的文件

概述

os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。

语法

os.remove(path)

参数

  • path -- 要移除的文件路径

返回值

该方法没有返回值

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目录
print "目录为: %s" %os.listdir(os.getcwd())
# 移除
os.remove("aa.txt")
# 移除后列出目录
print "移除后 : %s" %os.listdir(os.getcwd())

以上程序输出结果为:
目录为:
[ 'a1.txt','aa.txt','resume.doc' ]
移除后 : 
[ 'a1.txt','resume.doc' ]

os.removedirs() 递归删除目录(必须为空目录)

概述

os.removedirs() 方法用于递归删除目录。像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般意味着你文件夹不为空)。

语法

os.removedirs(path)

参数

  • path -- 要移除的目录路径

返回值

该方法没有返回值

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目录
print "目录为: %s" %os.listdir(os.getcwd())
# 移除
os.removedirs("/test")
# 列出移除后的目录
print "移除后目录为 %s :" %os.listdir(os.getcwd())

以上程序输出结果为:
目录为:
[  'a1.txt','resume.doc','a3.py','test' ]
移除后目录为:
[  'a1.txt','resume.doc','a3.py' ]

os.rmdir() 删除指定路径的目录(不递归父目录)

概述

os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。

语法

os.rmdir(path)

参数

path -- 要删除的目录路径

返回值

该方法没有返回值

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys
# 列出目录
print "目录为: %s"%os.listdir(os.getcwd())
# 删除路径
os.rmdir("mydir")
# 列出重命名后的目录
print "目录为: %s" %os.listdir(os.getcwd())

以上程序输出结果为:
目录为:
[  'a1.txt','resume.doc','a3.py','mydir' ]
目录为:
[  'a1.txt','resume.doc','a3.py' ]

os.rename() 命名文件或目录

概述

os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。

语法

os.rename(src, dst)

参数

  • src -- 要修改的目录名
  • dst -- 修改后的目录名

返回值

该方法没有返回值

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目录
print "目录为: %s"%os.listdir(os.getcwd())
# 重命名
os.rename("test","test2")
print "重命名成功。"
# 列出重命名后的目录
print "目录为: %s" %os.listdir(os.getcwd())

以上程序输出结果为:
目录为:
[  'a1.txt','resume.doc','a3.py','test' ]
重命名成功。
[  'a1.txt','resume.doc','a3.py','test2' ]

os.renames() 用于递归重命名目录或文件

概述

os.renames() 方法用于递归重命名目录或文件。类似rename()。

语法

os.renames(old, new)

参数

  • old -- 要重命名的目录
  • new --文件或目录的新名字。甚至可以是包含在目录中的文件,或者完整的目录树。

返回值

该方法没有返回值

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys
print "当前目录为: %s" %os.getcwd()
# 列出目录
print "目录为: %s"%os.listdir(os.getcwd())
# 重命名 "aa1.txt"
os.renames("aa1.txt","newdir/aanew.txt")
print "重命名成功。"
# 列出重命名的文件 "aa1.txt"
print "目录为: %s" %os.listdir(os.getcwd())

以上程序输出结果为:
当前目录为: /tmp
目录为:
 [  'a1.txt','resume.doc','a3.py','aa1.txt','Administrator','amrood.admin' ]
重命名成功。
目录为:
 [  'a1.txt','resume.doc','a3.py','Administrator','amrood.admin' ]

os.path.basename() 获取路径中的文件名

概述

os.path.basename() 方法用于返回文件路径中的文件名

语法

os.path.basename(path)

参数

  • path -- 文件路径

返回值

文件名

实例:

import os
print( os.path.basename('/root/runoob.txt') )   # 返回文件名

以上程序输出结果为:
runoob.txt

os.path.dirname() 返回文件路径

概述

os.path.basename() 方法用于返回文件路径中的文件名

语法

os.path.dirname(path)

参数

  • path -- 文件路径

返回值

文件所在的目录

实例:

import os
print( os.path.dirname('/root/runoob.txt') )    # 返回目录路径

以上程序输出结果为:
/root

os.path.split() 把路径分割成 dirname 和 basename,返回一个元组

概述

os.path.split() 方法把路径分割成 dirname 和 basename,返回一个元组

语法

os.path.split(path)

参数

  • path -- 文件路径

返回值

dirname 和 basename,返回一个元组

实例:

import os
print( os.path.split('/root/runoob.txt') )      # 分割文件名与路径   

以上程序输出结果为:
('/root', 'runoob.txt')

os.path.splitext()(返回 filename,extension)元组


os.path.join() 将目录和文件名合成一个路径

概述

os.path.join() 方法可以将目录和文件名合成一个路径

语法

os.path.join((path1[, path2[, ...]])

参数

  • path -- 目录 文件名

返回值

合并后的文件路径

实例:

import os
print( os.path.join('root','test','runoob.txt') )  # 将目录和文件名合成一个路径

以上程序输出结果为:
root/test/runoob.txt

os.path.exists() 判断文件/文件夹是否存在

概述

os.path.exists() 方法可以直接判断文件/文件夹是否存在

语法

os.path.exists(path)

参数

  • path -- 文件路径

返回值

如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False

实例:

import os
print( os.path.exists('/root/runoob.txt') )    

以上程序输出结果为:
True

os.path.getsize()返回文件大小


os.path.isabs()是否为绝对路径


os.path.isdir()是否为目录


os.path.isfile()是否为文件


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!