Python os模块

os 模块提供了非常丰富的方法用来处理文件和目录。

权限

查看权限

1
2
3
4
os.access(path,mode)

path:指定文件路径
mode:参数参数有F_OK(是否存在),R_OK(可读),W_OK(可写),X_OK(可执行)
1
2
3
4
5
6
7
8
9
>>> import os                                                            
>>> os.access('C:/Users/Think/Desktop/Python/test.py',os.F_OK)
True
>>> os.access('C:/Users/Think/Desktop/Python/test.py',os.R_OK)
True
>>> os.access('C:/Users/Think/Desktop/Python/test.py',os.W_OK)
True
>>> os.access('C:/Users/Think/Desktop/Python/test.py',os.X_OK)
True

更改权限

os.chmod() 方法用于更改文件或目录的权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
os.chmod(path, mode)

path -- 文件名路径或目录路径。
权限指定:
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下取消只读
1
2
3
4
5
6
7
8
9
>>> os.chmod('C:/Users/Think/Desktop/Python/test.py',stat.S_IREAD)
>>> os.access('C:/Users/Think/Desktop/Python/test.py',os.W_OK)
False
>>> os.access('C:/Users/Think/Desktop/Python/test.py',os.F_OK)
True
>>> os.access('C:/Users/Think/Desktop/Python/test.py',os.X_OK)
True
>>> os.access('C:/Users/Think/Desktop/Python/test.py',os.R_OK)
True

更改所有者

os.chown() 方法用于更改文件所有者,如果不修改可以设置为 -1, 你需要超级用户权限来执行权限修改操作。

1
2
3
4
5
6
7
8
9
chown()方法语法格式如下:

os.chown(path, uid, gid);

path -- 设置权限的文件路径

uid -- 所属用户 ID

gid -- 所属用户组 ID

目录

1
2
3
4
5
6
7
8
9
10
11
>>> os.getcwd() #返回当前工作的目录
'C:\\Users\\Think\\Desktop'
>>> os.listdir('.') #返回指定目录下所有的文件和目录名
['file.txt', 'test', 'caidan.py', 'test.txt', 'test.py', 'test1.py', 'enumerate.py', 'login.py']
>>> os.remove('test1.py') #删除指定文件
>>> os.rmdir('aaa') #删除指定目录
>>> os.mkdir('directory') #创建目录,只能创建一层目录
>>> os.system('whoami') #执行shell命令
Think
>>> os.path.getmtime('.') #返回在此path下最后一次修改的时间戳
1530964033.3031383

文件

打开文件

os.open() 方法用于打开一个文件,并且设置需要的打开选项,模式参数mode参数是可选的,默认为 0777。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
os.open(file, flags[, mode]);

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: 不追踪软链接

读取文件

os.read() 方法用于从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。

1
2
3
4
5
6
os.read(fd,n)


fd -- 文件描述符。

n -- 读取的字节。

删除文件

os.unlink() 方法用于删除文件,如果文件是一个目录则返回一个错误

1
2
3
os.unlink(path)

path -- 删除的文件路径

Python sys模块