Python文件与目录管理常用标准库 osshutil:查看当前目录、创建或删除路径、改名移动、拼接路径、按后缀过滤,以及读取文件大小等元信息。内容读写在上一篇,这里管的是文件系统本身。

当前目录与列表

import os

print(os.getcwd())
print(os.listdir("."))

getcwd 返回进程当前工作目录。listdir 列出该目录下的名字(不含递归子目录里的深层文件)。

创建目录

mkdir 只建一层。makedirs 可以一次建出 a/b/c 这种多层路径。目标已存在时 mkdir 会抛 FileExistsError,可先判断:

import os

os.mkdir("data")
# os.makedirs("a/b/c")
print(os.path.exists("data"))

if not os.path.exists("data"):
    os.mkdir("data")

删除文件

import os

if os.path.exists("demo.txt"):
    os.remove("demo.txt")
    print("已删除")
else:
    print("文件不存在")

删除目录

空目录用 os.rmdir。目录里还有文件时,要用 shutil.rmtree 递归删除。下面示例带 ignore_errors=True,路径不存在时也不抛错:

import os
import shutil

# os.rmdir("data")
shutil.rmtree("data", ignore_errors=True)

改名与移动

os.rename 既能改名,也能把文件挪到另一个已存在的目录下(新路径里的目录必须事先建好):

import os

os.rename("old.txt", "new.txt")
# os.rename("a.txt", "backup/a.txt")

路径工具

判断存在、区分文件与目录、拼接、取文件名与后缀,都在 os.path 里。拼接请用 join,不要手写 \/,这样同一套代码在 Windows 与 Linux 上都能用:

import os

print(os.path.exists("a.txt"))
print(os.path.isfile("a.txt"))
print(os.path.isdir("data"))
print(os.path.join("data", "x.txt"))
print(os.path.basename("a/b.txt"))
print(os.path.dirname("a/b.txt"))
print(os.path.splitext("a/b.txt"))

列出并过滤

列表推导可以按后缀筛文件。os.walk 则递归走进子目录,适合扫整棵目录树:

import os

txt_files = [f for f in os.listdir(".") if f.endswith(".txt")]
print(txt_files)

for root, dirs, files in os.walk("."):
    for name in files:
        print(os.path.join(root, name))

文件信息

import os

info = os.stat("a.txt")
print(info.st_size)
print(info.st_mtime)

st_size 是字节数。st_mtime 是最后修改时间的时间戳,需要可读日期时再交给 datetime 转换。

注意事项

  • 删除不存在的路径会报 FileNotFoundError,先 exists 或捕获异常。
  • 非空目录不能用 rmdir,应改用 shutil.rmtree
  • 路径拼接用 os.path.join,避免写死分隔符。