└── python
├── 1.txt
├── 2.txt
├── 3.txt
├── xiangmu1
│ └── yi
├── xiangmu2
│ └── er
└── xiangmu3
└── san
1.切换目录
#语法
os.chdir(path)
path:绝对路径或相对路径
#ipython演示
In [3]: import os
In [4]: os.chdir('xiangmu1')
In [5]: ls
yi
2.文件或目录的特殊设置
#语法
os.chflages(path, flages)
path:绝对路径或相对路径
flages:特殊设置,如文件只读,只能追加,不能删除等
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: 快照文件(超级用户可设)
3.修改文件权限
#语法
os.chmod(path, mode)
path:路径
mode:权限
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下取消只读
#不再掩饰,感觉用这个还不如直接执行shell命令
4.修改所属用户和用户组
#语法:
os.chown(path, uid, gid)
path:路径
uid:用户id
gid:用户组,组id
演示:
import os
os.chown('1.txt', 1001, -1)
#-1表示组id不变,但是work用户不属于root组,所以组为空了
ll total 12
-rw-r--r-- 1 work 0 Jul 5 08:44 1.txt
5.返回当前工作目录
#语法
os.getwd()
#演示
os.getcwd()
Out[6]: '/root/python'
6.创建硬链接文件
#将1.txt链接到4.txt
In [1]: import os
In [2]: src = '1.txt'
In [3]: dst = '4.txt'
In [4]: os.link(src, dst)
In [5]: ll
total 20
-rw-r--r-- 2 work 14 Jul 6 11:19 1.txt
-rw-r--r-- 1 root 0 Jul 5 08:44 2.txt
-rw-r--r-- 1 root 0 Jul 5 08:44 3.txt
-rw-r--r-- 2 work 14 Jul 6 11:19 4.txt
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu1/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu2/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu3/
In [6]: cat 4.txt
1111111111111
7.返回指定目录下的内容
#返回一个无序的列表
In [8]: os.listdir('./')
Out[8]: ['xiangmu2', '3.txt', '1.txt', '4.txt', 'xiangmu1', 'xiangmu3', '2.txt']
8.创建目录
语法:
os.mkdir(path, mode)
os.makedirs(path, mode) #创建递归目录
In [3]: os.mkdir('new', 755)
In [4]: ll
total 24
-rw-r--r-- 2 work 14 Jul 6 11:19 1.txt
-rw-r--r-- 1 root 0 Jul 5 08:44 2.txt
-rw-r--r-- 1 root 0 Jul 5 08:44 3.txt
-rw-r--r-- 2 work 14 Jul 6 11:19 4.txt
d-wxr----t 2 root 4096 Jul 6 11:51 new/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu1/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu2/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu3/
9.删除目录
#语法
os.rmdir(path)
os.removedirs(path) #递归删除目录
#演示
In [6]: ll
total 24
-rw-r--r-- 2 work 14 Jul 6 11:19 1.txt
-rw-r--r-- 1 root 0 Jul 5 08:44 2.txt
-rw-r--r-- 1 root 0 Jul 5 08:44 3.txt
-rw-r--r-- 2 work 14 Jul 6 11:19 4.txt
d-wxr----t 2 root 4096 Jul 6 11:51 new/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu1/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu2/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu3/
AttributeError: module 'os' has no attribute 'redir'
In [8]: os.rmdir('new')
In [9]: ll
total 20
-rw-r--r-- 2 work 14 Jul 6 11:19 1.txt
-rw-r--r-- 1 root 0 Jul 5 08:44 2.txt
-rw-r--r-- 1 root 0 Jul 5 08:44 3.txt
-rw-r--r-- 2 work 14 Jul 6 11:19 4.txt
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu1/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu2/
drwxr-xr-x 2 root 4096 Jul 5 08:47 xiangmu3/
10.删除文件
#语法
os.remove(path)
#演示
In [10]: ll xiangmu1/
total 0
-rw-r--r-- 1 root 0 Jul 5 08:47 yi
In [11]: os.remove('xiangmu1/yi')
In [12]: ll xiangmu1/
total 0
11.重命名文件或目录
#语法
os.rename(old, new)
os.renames(old, new) #递归
#演示
In [13]: ll xiangmu2/
total 0
-rw-r--r-- 1 root 0 Jul 5 08:47 er
In [14]: os.renames('xiangmu2/er', 'er/er.txt')
In [15]: ll er/
total 0
-rw-r--r-- 1 root 0 Jul 5 08:47 er.txt
1.返回绝对路径
语法:
os.path.abspath(path)
path:路径
#演示
In [1]: from os import path
In [2]: path.abspath('./')
Out[2]: '/root/python'
2.判断路径是否存在
语法:
os.path.exists(path)
path:路径
#演示
In [6]: os.path.exists('1.txt')
Out[6]: True
3.查看文件的创建、访问、修改时间
语法:
os.path.getctime(path) #创建时间
os.path.getmtime(path) #修改时间
os.path.getatime(path) #访问时间
path:路径
#演示
In [1]: import os.path
In [2]: os.path.getatime('1.txt')
Out[2]: 1594005737.0693882
In [3]: os.path.getmtime('1.txt')
Out[3]: 1594005573.6090128
In [4]: os.path.getctime('1.txt')
Out[4]: 1594005728.4796853
4.查看文件大小
#语法
os.path.getsize(path)
#演示
In [6]: os.path.getsize('1.txt')
Out[6]: 14
5.判断是否为目录、文件、链接、挂载目录
#语法
os.path.isfile(path) #判断是否为文件
os.path.isdir(path) #判断是否为目录
os.path.islink(path) #判断是否为链接
os.path.ismount(path) #判断目录是否被挂载
#演示
In [7]: os.path.isfile('1.txt')
Out[7]: True
In [8]: os.path.isdir('xiangmu1')
Out[8]: True
In [9]: os.path.islink('1.txt')
Out[9]: False
In [10]: os.path.ismount('xiangmu1')
Out[10]: False
合并路径
os.path.join(path1, path2)