FAQ | Python 路径与参数实用操作集
以下是 Python 路径拼接、命令行参数解析等高频操作的常见问题与解决方案,代码适配 Python 3.6+(兼容主流生产环境)。
Q1: 如何获取当前工作目录?
当前工作目录(CWD)指脚本/程序被执行时所在的系统目录,而非脚本自身的存储目录,需区分清楚。
方法选择与代码
TIP
- 新项目优先 pathlib:返回的是
Path对象而非字符串,后续拼接、解析更安全易读 - 避免用
os.path.abspath('.'):依赖当前目录符号.的解析,效率稍低且语义不如getcwd()明确 - 简单临时脚本兼容旧版时用
os.getcwd()
Q2: 如何获取当前执行模块的文件信息?
这里的「模块文件」指代码直接写入的 .py 源文件,需注意特殊环境(如 REPL、打包工具)的表现差异。
核心操作代码
NOTE
- Python REPL/Notebook 中:
__file__变量不存在,直接运行会报错 - PyInstaller/Nuitka 打包后:
__file__可能指向临时解压目录,需用sys._MEIPASS替代(仅打包环境存在) - 必须加
resolve():可以自动展开相对路径、符号链接(软连接),避免后续拼接出错
Q3: 如何处理命令行参数?
命令行参数是外部传入脚本的配置,有「简单快速」和「专业可扩展」两种方案。
方案选择与代码
方案1:简单快速(仅适合1-3个无命名参数的小脚本)
方案2:专业可扩展(Python 官方内置模块,推荐)
TIP
- 追求极简友好 CLI 界面:用
click(装饰器语法,更像写函数) - 追求强类型提示:用
typer(基于 click,自动生成类型检查和帮助文档)
Q4: 如何获取当前 Python 解释器的路径?
这个路径可以用来区分当前是系统 Python、虚拟环境 Python 还是conda Python。
代码实现
NOTE
- PyInstaller/Nuitka 打包后,
sys.executable会指向生成的.exe(Windows)或可执行文件(Linux/macOS),而非原始的 Python 解释器
Q5: 如何写出跨平台的路径代码?
Windows 用反斜杠 \,Linux/macOS 用正斜杠 /,手动拼接极易出错,pathlib 是完美解决方案。
核心跨平台代码
TIP
- 永远别手动写
\或/:交给pathlib处理 - 尽量用
Path对象传递路径:别转成字符串丢给第三方库(除非库明确要求字符串)
本篇FAQ总结
最后给大家划一下生产环境的必用规范:
- 所有路径操作:优先用
pathlib(替代os.path全家桶) - 命令行参数:超过3个或需要命名/布尔型,用
argparse - 特殊环境(REPL/打包):提前判断变量是否存在
- 跨平台:禁止手动拼接路径分隔符

