2016-03-21 2 views
0

Я хочу установить относительный путь к папке с моим исполнительным скриптом, который будет работать с любой машины без абсолютного пути к файлу без жесткого кодирования. До сих пор я следующее:Как установить относительный путь к исполнительному скрипту

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

Когда я запускаю мой сценарий из PyCharm вызова print(path_to_folder) возвращения правильный путь

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

Но если я пытаюсь вызвать его из cmd как python3.4 C:\Users\Me\Desktop\Project\Script\my_script.py я получаю только

C:\Users\Me\

Каков более надежный способ установки относительного пути?

ответ

1

Я имел обыкновение использовать Pathlib

# 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)  
+0

Спасибо. Кажется, это сработало! – Andersson

0

Вы также можете сделать это без Pathlib только с помощью __FILE__ переменной, Python определяет каждый модуль.

В самом родительском скрипте:

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

Или в более общем случае, если вы просто хотите знать, где модуль находится, вы можете просто сделать:

from os.path import dirname, abspath 
import mymodule 
path_to_folder = abspath(dirname(mymodule.__file__)) 
print(path_to_folder) 
Смежные вопросы