Как получить путь к родительскому каталогу в python - PullRequest
2 голосов
/ 09 ноября 2019

У меня есть структура каталогов ниже:

E:\<somepath>\PythonProject
                        -> logs
                        -> configs
                        -> source
                                -> script.py

PythonProject - это мой основной каталог, а внутри source dir у меня есть скрипт на python. С script.py я хочу получить доступ к файлу конфигурации, присутствующему в configs. Здесь я не хочу упоминать полный путь, например E:\<somepath>\PythonProject\configs\config.json a. Я буду развертывать его в системе, для которой я не знаю пути. Поэтому я решил пойти с

config_file_path = os.path.join (os.path.dirname ( file ))

Но это дает мне путь к исходному каталогуE:\<somepath>\PythonProject\source, и я просто хочу E:\<somepath>\PythonProject, чтобы позже я мог добавить configs\config.json для доступа к пути к файлу конфигурации.

Как я могу это сделать. Спасибо

Ответы [ 4 ]

1 голос
/ 09 ноября 2019

Вы можете использовать модуль pathlib:

(Если у вас его нет, используйте pip install pathlib в терминале.)

from pathlib import Path
path = Path("/<somepath>/PythonProject/configs/config.json")
print(path.parents[1])

path = Path("/here/your/path/file.txt")
print(path.parent)
print(path.parent.parent)
print(path.parent.parent.parent)
print(path.parent.parent.parent.parent)
print(path.parent.parent.parent.parent.parent)

, что дает:

/<somepath>/PythonProject
/here/your/path
/here/your
/here
/
/

(из Как получить родительский каталог в Python? по https://stackoverflow.com/users/4172/kender)

1 голос
/ 09 ноября 2019

Использование pathlib:

from pathlib import Path

p = Path(path_here)

# so much information about the file
print(p.name, p.parent, p.parts[-2])
print(p.resolve())
print(p.stem)

1 голос
/ 09 ноября 2019

Вы можете сделать это только с помощью модуля os:

import os
direct = os.getcwd().replace("source", "config")
1 голос
/ 09 ноября 2019

в одну сторону:

import os 

config_file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'configs\config.json')

print(config_file_path)

или (вам нужно будет установить pip pathlib):

from pathlib import Path

dir = Path(__file__).parents[1]
config_file_path = os.path.join(dir, 'configs/config.json')

print(config_file_path)

третий путь:

from os.path import dirname as up

dir = up(up(__file__))

config_file_path = os.path.join(dir, 'configs\config.json')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...