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

    技术2025-07-24  7

    基本文件路径操作(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下取消只读

    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)
    Processed: 0.016, SQL: 9