智享百科屋
霓虹主题四 · 更硬核的阅读氛围

Python脚本中os模块的实用操作技巧(进阶教程)

发布时间:2025-12-13 17:19:52 阅读:303 次

文件路径处理是日常开发的常客

在写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)

这个小脚本运行一次,杂乱的下载区立马清爽。