Python文件与目录管理常用标准库 os 与 shutil:查看当前目录、创建或删除路径、改名移动、拼接路径、按后缀过滤,以及读取文件大小等元信息。内容读写在上一篇,这里管的是文件系统本身。
当前目录与列表
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,避免写死分隔符。