关于python:如何设置执行脚本的相对路径

How to set relative path to executive script

本问题已经有最佳答案,请猛点这里访问。

我想用我的执行脚本设置文件夹的相对路径,它可以在任何计算机上运行,而不需要将绝对路径硬编码为文件。到目前为止,我有以下几点:

1
2
import os
path_to_folder = os.path.realpath('.')

当我从PyCharm运行脚本时,调用print(path_to_folder)返回正确的路径

C:\Users\Me\Desktop\Project\Script\

但是如果我试着从cmdpython3.4 C:\Users\Me\Desktop\Project\Script\my_script.py那样称呼它,我会得到

C:\Users\Me\

设置相对路径的更可靠方法是什么?


我以前用Pathlib

1
2
3
4
5
6
7
8
# get sibling file
sib = Path(__file__).with_name(same_level_file)

# get parent
par = Path(__file__).parent

# file in sibling parent
sib2 = Path(__file__).parent.with_name(parent_folder).joinpath(file2)


您也可以在没有pathlib的情况下,使用python定义每个模块的文件变量来完成这项工作。

在父脚本本身中:

1
2
3
from os.path import dirname, abspath
path_to_folder = abspath(dirname(__file__))
print(path_to_folder)

或者更一般地说,如果您只想知道模块的位置,您可以执行以下操作:

1
2
3
4
from os.path import dirname, abspath
import mymodule
path_to_folder = abspath(dirname(mymodule.__file__))
print(path_to_folder)