如何让Python脚本自动获取命令行当前目录并执行文件重命名?
当然可行!这其实是Python脚本非常常见的需求,实现起来也特别简单
核心逻辑一句话就能说清:当你在命令行的某个目录下运行脚本时,Python会自动把这个目录设为脚本的「当前工作目录」——你根本不用手动传参数,直接用内置工具获取这个目录就行。
具体实现方式
有两种主流写法可以获取当前工作目录,选你习惯的就行:
1. 用 os 模块(传统写法)
把你脚本里硬编码的目录路径替换成下面的代码,就能动态获取命令行当前所在的目录:
import os # 获取命令行当前目录 target_dir = os.getcwd() print(f"正在处理目录: {target_dir}") # 接下来就可以遍历这个目录下的文件做重命名了 for filename in os.listdir(target_dir): file_path = os.path.join(target_dir, filename) if os.path.isfile(file_path): # 这里写你的重命名逻辑,比如给所有文档加前缀 if filename.endswith((".docx", ".pdf")): new_filename = f"archive_{filename}" os.rename(file_path, os.path.join(target_dir, new_filename))
2. 用 pathlib 模块(Python 3.4+ 推荐的现代写法)
pathlib 提供了更直观的路径操作API,代码可读性更高,处理文件重命名也更简洁:
from pathlib import Path # 获取命令行当前目录 target_dir = Path.cwd() print(f"正在处理目录: {target_dir}") # 遍历目录下的所有文件 for file_path in target_dir.iterdir(): if file_path.is_file(): # 示例:把所有图片重命名为序列格式(img_001.jpg、img_002.png...) if file_path.suffix in [".jpg", ".png", ".jpeg"]: # 生成有序的新文件名 file_index = len(list(target_dir.glob("img_*"))) + 1 new_name = f"img_{file_index:03d}{file_path.suffix}" file_path.rename(target_dir / new_name)
关键避坑提示
- 别用
__file__获取目录!__file__返回的是脚本本身所在的文件夹路径,不是你运行命令时的目录——这是很多新手容易踩的坑。 - 确保脚本所在的文件夹已经加入系统
PATH环境变量,这样你在任意目录下都能直接敲rename.py运行(Windows下可能需要重启命令行让PATH生效)。 - Windows系统如果想去掉
.py后缀直接运行,可以通过Python的py launcher配置,或者把脚本改成.pyw(不过控制台程序还是保留.py更方便)。
快速测试方法
你可以先写个极简脚本验证效果:
# test_dir.py import os print(f"当前工作目录: {os.getcwd()}")
把它放到PATH文件夹里,然后随便打开一个目录的命令行,运行test_dir.py——你会发现打印出来的就是你当前命令行所在的目录,完全符合你的需求!
内容的提问来源于stack exchange,提问作者Nick-H
相关产品推荐
相关产品推荐

