python中的目录操作(os模块)

基本文件路径操作(os)

当前演示结构

└── python
    ├── 1.txt
    ├── 2.txt
    ├── 3.txt
    ├── xiangmu1
    │   └── yi
    ├── xiangmu2
    │   └── er
    └── xiangmu3
        └── san
os中的基本目录操作

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

基本文件路径操作(os.path)

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)

你可能感兴趣的:(python中的各个模块的使用,python)