Python os模块手册

Python的标准库中的os模块包含普遍的操作系统功能。这个模块的作用主要是提供与平台无关的功能。也就是说os模块能够处理平台间的差异问题,使得编写好的程序无需做任何改动就能在另外的平台上运行。当然,这个模块只是提供了一个轻便的方法使用要依赖操作系统的功能。有些特定的功能还得使用特定的模块,比如:如何只是想读或写文件,请使用open();如果想操作文件路径,请使用os.path模块;如果想在命令行
摘要由CSDN通过智能技术生成

Python的标准库中的os模块包含普遍的操作系统功能。这个模块的作用主要是提供与平台无关的功能。也就是说os模块能够处理平台间的差异问题,使得编写好的程序无需做任何改动就能在另外的平台上运行。当然,这个模块只是提供了一个轻便的方法使用要依赖操作系统的功能。有些特定的功能还得使用特定的模块,比如:如何只是想读或写文件,请使用open();如果想操作文件路径,请使用os.path模块;如果想在命令行中,读入所有文件的所有行,请使用fileinput模块;使用tempfile模块创建临时文件和文件夹;更高级的文件和文件夹处理,请使用shutil模块。如果想要了解os模块的所有内容,可以使用dir(os)方法查看。

模块变量

os.error
内建OSError exception的别名。

os.name
导入依赖操作系统模块的名字,指示你正在使用的平台。下面是目前被注册的名字:’posix’, ‘nt’, ‘mac’, ‘os2’, ‘ce’, ‘java’, ‘riscos’.

os.environ
一个mapping对象表示环境。例如,environ[‘HOME’] ,表示的你自己home文件夹的路径(某些平台支持,windows不支持) ,它与C中的getenv(“HOME”)一致。

这个mapping对象在os模块第一次导入时被创建,一般在python启动时,作为site.py处理过程的一部分。在这一次之后改变environment不 影响os.environ,除非直接修改os.environ。

注:putenv()不会直接改变os.environ,所以最好是修改os.environ。

注:在一些平台上,包括FreeBSD和Mac OS X,修改environ会导致内存泄露。参考 putenv()的系统文档。

如果没有提供putenv(),mapping的修改版本传递给合适的创建过程函数,将导致子过程使用一个修改的environment。

如果这个平台支持unsetenv()函数,你可以删除mapping中的项目。当从os.environ使用pop()或clear()删除一个项目时,unsetenv()会自动被调用(版本2.6)。

os.curdir
操作系统用此常数字符串作为当前文件夹的引用。

os.pardir
操作系统用此常数字符串作为父文件夹的引用。

os.sep
系统使用此字符来分割路径。

os.altsep
系统使用另外一个字符来分割路径,如果只有一个分割字符存在,则是None。

os.extsep
分割基本文件名和扩展名的字符。

os.pathsep
系统使用此字符来分割搜索路径(像PATH),例如POSIX上’:’,Windows上的’;’,也可以通过os.path。

os.defpath
默认的搜索路径用作 execp()和spawnp()如果环境没有 ‘PATH’。 也可以通过os.path。

os.linesep
当前平台上的换行符字符串. 在POSIX上是’\n’,或者 在Windows上是’\r\n’ . 不要使用 os.linesep作为换行符,当写入文本文件时 (默认); 使用’\n’代替, 在所有平台上。

os.devnull
空设备的文件路径.例如:POSIX上 ‘/dev/null’ . 也可以通过os.path。

文件与文件夹

os.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是否可执行。
返回值:
如果允许访问返回 True , 否则返回False。

实例:

import os

#假定./1.txt文件存在,并有读写权限

ret=os.access('./1.txt',os.F_OK)
print('F_OK-返回值:%s'%ret)

ret=os.access('./1.txt',os.R_OK)
print('R_OK-返回值:%s'%ret)

ret=os.access('./1.txt',os.W_OK)
print('W_OK-返回值:%s'%ret)

ret=os.access('./1.txt',os.X_OK)
print('X_OK-返回值:%s'%ret)

运行结果:
这里写图片描述

os.chdir()
格式如下:

os.chdir(path)

参数:
● path–要切换到的新路径
返回值:
若允许访问返回True,否则返回False

实例:

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

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

# 修改当前工作目录
os.chdir( path )

# 查看修改后的工作目录
retval = os.getcwd()
print("目录修改成功 %s"%retval)

运行结果:
这里写图片描述

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下取消只读
返回值:
 无返回值

实例:

import os,stat
# 假定 ./1.txt 文件存在,设置文件可以通过用户组执行
os.chmod('./1.txt',stat.S_IXGRP)
# 设置文件可以被其他用户写入
os.chmod('./1.txt',stat.S_IWOTH)
print('修改成功')

运行结果:
这里写图片描述

os.chown()
格式如下:

os.chown(path,uid,gid)

参数:
 ●path – 设置权限的文件路径
 ●uid – 所属用户 ID
 ●gid – 所属用户组 ID
返回值:
 没有返回值。

实例:

import os
# 假定 ./1.txt 文件存在.
# 设置所有者 ID 为 100
#如果不修改可以设置为 -1, 你需要超级用户权限来执行权限修改操作。
os.chown('./1.txt',100,-1)
print('修改权限成功')

运行结果:
这里写图片描述

os.chroot()
格式如下:

os.chroot(path)

参数
 ●path – 要设置为根目录的目录。
返回值
 没有返回值。

实例

import os, sys

# 设置根目录为 /tmp
#用该函数需要管理员权限。

os.chroot("/tmp")

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

运行结果

修改根目录成功!!

os.close()
格式如下:

os.close(fd)

参数
 ●fd – 文件描述符。
返回值
 没有返回值。

实例

import os, sys

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

#  写入字符串
os.write(fd, "This is test")

# 关闭文件
os.close( fd )

print "关闭文件成功!!"

运行结果

关闭文件成功!!

os.closerange()
os.closerange() 方法用于关闭所有文件描述符 fd,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略。
格式如下:

os.closerange(fd_low, fd_high)

参数
 ●fd_low – 最小文件描述符
 ●fd_high – 最大文件描述符
返回值
 没有返回值。
实例

import os, sys

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

# 写入字符串
os.write(fd, "This is test")

# 关闭文件
os.closerange( fd, fd)

print "关闭文件成功!!"

运行结果

关闭文件成功!!

os.dup()
os.dup() 方法用于复制文件描述符 fd。
格式如下:

os.dup(fd)

参数
 ●fd – 文件描述符
返回值
 返回复制的文件描述符。

实例

import os, sys

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

# 复制文件描述符
d_fd = os.dup( fd )

# 使用复制的文件描述符写入文件
os.write(d_fd, "This is test")

# 关闭文件
os.closerange( fd, d_fd)

print "关闭所有文件成功!!"

输出结果

关闭所有文件成功!!

os.dup2()
os.dup2() 方法用于将一个文件描述符 fd 复制到另一个 fd2。
格式如下:

os.dup2(fd, fd2)

参数
 ●fd – 要被复制的文件描述符
 ●fd2 – 复制的文件描述符
返回值
 没有返回值。

实例

import os, sys

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

# 写入字符串
os.write(fd, "This is test")

# 文件描述符为 1000
fd2 = 1000
os.dup2(fd, fd2);

# 在新的文件描述符上插入数据
os.lseek(fd2, 0, 0)
str = os.read(fd2, 100)
print "读取的字符串是 : ", str

# 关闭文件
os.close( fd )

print "关闭文件成功!!"

输出结果

读取的字符串是 :  This is test
关闭文件成功!!

os.fchdir()
os.fchdir() 方法通过文件描述符改变当前工作目录。

格式如下:

os.fchdir(fd)

参数
 ●fd – 文件描述符
返回值
 该方法没有返回值。

实例

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.fchmod()
os.fchmod() 方法用于改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限。
格式如下:

os.fchmod(fd, mode)

参数
●fd – 文件描述符
●mode – 可以是以下一个或多个组成,多个使用 “|” 隔开:
 ●stat.S_ISUID:设置 UID 位
 ●stat.S_ISGID: 设置组 ID 位
 ●stat.S_ENFMT: 系统文件锁定的执法行动
 ●stat.S_ISVTX: 在执行之后保存文字和图片
 ●stat.S_IREAD: 对于拥有者读的权限
 ●stat.S_IWRITE: 对于拥有者写的权限
 ●stat.S_IEXEC: 对于拥有者执行的权限
 ●stat.S_IRWXU:对于拥有者读、写、执行的权限
 ●stat.S_IRUSR: 对于拥有者读的权限
 ●stat.S_IWUSR: 对于拥有者写的权限
 ●stat.S_IXUSR: 对于拥有者执行的权限
 ●stat.S_IRWXG: 对于同组的人读写执行的权限
 ●stat.S_IRGRP: 对于同组读的权限
 ●stat.S_IWGRP:对于同组写的权限
 ●stat.S_IXGRP: 对于同组执行的权限
 ●stat.S_IRWXO: 对于其他组读写执行的权限
 ●stat.S_IROTH: 对于其他组读的权限
 ●stat.S_IWOTH: 对于其他组写的权限
 ●stat.S_IXOTH:对于其他组执行的权限
返回值
 该方法没有返回值。

实例

import os, sys, stat

# 打开文件 "/tmp/foo.txt"
fd = os.open( "/tmp", os.O_RDONLY )

# 设置文件可通过组执行

os.fchmod( fd, stat.S_IXGRP)

# 设置文件可被其他用户写入
os.fchmod(fd, stat.S_IWOTH)

print "修改权限成功!!"

# 关闭文件
os.close( fd )

输出结果 

修改权限成功!!

os.fchown()
 os.fchown() 方法用于修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定。
格式如下:

os.fchown(fd, uid, gid)

参数
 ●fd – 文件描述符
 ●uid – 文件所有者的用户id
 ●gid – 文件所有者的用户组id
返回值
 该方法没有返回值。

实例

import os, sys, stat

# 打开文件 "/tmp/foo.txt"
fd = os.open( "/tmp", os.O_RDONLY )

# 设置文件的用户 id 为 100
os.fchown( fd, 100, -1)

# 设置文件的用户组 id 为 100
os.fchown( fd, -1, 50)


print "修改权限成功!!"

# 关闭文件
os.close( fd )

输出结果

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值