关于python os模块获取路径问题
如果py文件放在软链路径下,那么无法获取当前路径,只能获取软链对应的真实路径
Python 3.8.2
创建软链路径
# 1.在/System/Volumes/Data创建ccc目录
mkdir -p /System/Volumes/Data/ccc
# 2.创建软链: test_ccc -> /System/Volumes/Data/ccc
cd ~ && ln -s /System/Volumes/Data/ccc test_ccc && cd test_ccc
# 3.使用pwd获取到
pwd
/Users/lxd670/test_ccc
执行test1.py脚本
使用
os
获取都是软链指向的路径脚本路径
/Users/lxd670/test_ccc/test_1.py
import os
print('***获取当前目录***')
print(os.getcwd())
print(os.path.abspath(os.path.dirname(__file__)))
print('***获取上级目录***')
print(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
print(os.path.abspath(os.path.dirname(os.getcwd())))
print(os.path.abspath(os.path.join(os.getcwd(), "..")))
print('***获取上上级目录***')
print(os.path.abspath(os.path.join(os.getcwd(), "../..")))
python3 test2.py
***获取当前目录***
/System/Volumes/Data/ccc
/System/Volumes/Data/ccc
***获取上级目录***
/System/Volumes/Data/ccc
/System/Volumes/Data
/System/Volumes/Data
***获取上上级目录***
/System/Volumes
执行test2.py脚本
使用
pwd
获取当前路径,并不是软链指向的路径脚本路径
/Users/lxd670/test_ccc/test_2.py
import os
import subprocess
r = subprocess.run(args='pwd', capture_output=True)
res = r.stdout.decode('utf-8').strip()
print(res)
print(os.path.realpath(res))
print(os.path.abspath(res))
python3 test2.py
/Users/lxd670/test_ccc
/System/Volumes/Data/ccc
/Users/lxd670/test_ccc