我有一个存在于“scripts”目录中的可执行python脚本,并且在根目录中有一个指向该脚本(用于启动文件)的符号链接。类似的东西:
.
├── scripts
│ ├── const.py
│ ├── fops.py
│ ├── i_build.py
│ └── i_Props.ini
└── build_i -> scripts/i_build.py
我希望能够通过以下方式启动/运行我的脚本:
python build_i
从根目录。 i_build.py脚本将尝试打开i_Props.ini并根据其中的内容做一些魔术。
问题是当i_build.py脚本通过根目录中的符号链接启动时,i_build.py脚本将在根目录中查找其他文件(而不是存储i_build.py的/ scripts目录) )。
i_build.py文件的props文件位置为:
PROP_FILE = "i_Props.ini"
并试图打开它,然后失败。我出于明显的原因不想对路径进行硬编码。
在主文件中添加os.getcwd()
的快速测试证实了我怀疑它认为CWD是根目录,并且检查__file__
表示它是符号链接(“build_i”)。
有什么办法可以让python使用符号的目的地,例如__file__
名称和CWD吗?
答案 0 :(得分:13)
您可以使用__file__
,但必须采取一些预防措施才能获得真正的路径:
import os
base_dir = os.path.dirname(os.path.realpath(__file__))
然后加载相对于base_dir的其他文件/资源:
some_subdir = 'my_subdir'
some_file = 'my.ini'
ini_path = os.path.join(base_dir, some_subdir, some_file)
答案 1 :(得分:1)
只有几种可能性让人想起: