文件路径处理是日常开发的常客
在写Python脚本时,经常要和文件打交道。比如你每天从手机导出照片,想按日期自动归类到不同文件夹,这时候os模块就派上用场了。它能帮你轻松获取当前路径、拼接目录、拆分文件名。
import os
# 获取当前工作目录
print(os.getcwd())
# 拼接路径
path = os.path.join('photos', '2024-05', 'img001.jpg')
print(path)
# 分离文件名和目录
dir_name, file_name = os.path.split(path)
print(dir_name) # photos/2024-05
print(file_name) # img001.jpg遍历云同步文件夹的小帮手
很多人把资料放在云盘同步文件夹里,比如D:\OneDrive\Documents。你想批量检查哪些文件最近被修改过?os.listdir()配合os.stat()就能快速实现。
import os
from datetime import datetime
folder = 'D:\\OneDrive\\Reports'
for filename in os.listdir(folder):
filepath = os.path.join(folder, filename)
if os.path.isfile(filepath):
mtime = os.stat(filepath).st_mtime
print(f'{filename} 最后修改时间: {datetime.fromtimestamp(mtime)}')创建与删除目录也很常见
项目上线前要生成日志目录,或者清理临时文件,这些都可以自动化。os.makedirs()可以递归创建多级目录,而os.rmdir()只能删空目录,真要删除整个文件夹得用shutil,但判断是否存在还得靠os.path.exists()。
import os
log_dir = 'logs/error/202405'
if not os.path.exists(log_dir):
os.makedirs(log_dir)
print(f'已创建目录: {log_dir}')环境变量也能操控
部署脚本到不同机器时,路径可能不一样。Windows上用户名各不相同,直接写死C:\Users\John不合适。通过os.environ读取环境变量更灵活。
比如获取桌面路径:
import os
desktop = os.path.join(os.environ['USERPROFILE'], 'Desktop')
print(desktop)这样脚本换台电脑照样跑得通。
实际场景:自动整理下载目录
浏览器默认把所有东西下到Downloads里,乱成一团。写个定时任务脚本,用os模块扫描文件类型,按后缀搬走。
import os
downloads = '/Users/yourname/Downloads' # Mac/Linux 示例
for item in os.listdir(downloads):
filepath = os.path.join(downloads, item)
if not os.path.isfile(filepath):
continue
ext = os.path.splitext(item)[1].lower()
if ext in ('.jpg', '.png'):
target_folder = os.path.join(downloads, 'pictures')
elif ext in ('.pdf', '.docx'):
target_folder = os.path.join(downloads, 'documents')
else:
continue
if not os.path.exists(target_folder):
os.makedirs(target_folder)
new_path = os.path.join(target_folder, item)
os.rename(filepath, new_path)这个小脚本运行一次,杂乱的下载区立马清爽。