如何使用Python pathlib获取保留符号链接的当前工作目录
如何使用Python pathlib获取保留符号链接的当前工作目录
这个问题我之前也碰到过,确实pathlib.Path.cwd()默认会自动解析符号链接,返回真实的物理路径,和shell里显示的当前目录不一致,挺闹心的。不过有几个靠谱的办法可以解决,不用手动硬编码路径:
最通用的跨平台方案:结合
os.getcwd()和pathlib
Python的os模块里的getcwd()函数会返回shell中显示的当前工作目录,它不会解析符号链接,完全保留你实际进入的路径。我们只需要把它的结果转成Path对象,就能继续使用pathlib的所有便捷方法了:from pathlib import Path import os current_dir = Path(os.getcwd()) print(current_dir) # 输出带符号链接的当前工作目录,比如"/home/me/symlink/dir"这个方法在Linux、Unix、Windows系统上都能正常工作,是最稳妥的选择。
Linux/Unix下的备选方案:读取环境变量
PWD
在类Unix系统中,shell会维护一个PWD环境变量,它保存的就是你当前所在的路径(保留符号链接)。我们可以读取这个变量,同时加上os.getcwd()作为 fallback(避免进程不是从shell启动导致PWD不存在的情况):from pathlib import Path import os current_dir = Path(os.environ.get("PWD", os.getcwd())) print(current_dir)
简单说下原因:Path.cwd()内部在获取路径后默认做了路径解析操作,而os.getcwd()直接调用系统的getcwd()接口,会返回用户实际导航进入的路径,自然就保留了符号链接。
备注:内容来源于stack exchange,提问作者matleg
相关产品推荐
相关产品推荐

