Нахождение относительного пути текстового файла из другой подпапки - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть родительский каталог, и мой код Python находится в одном подкаталоге, но мой входной файл находится в другом подкаталоге.Как мне найти относительный путь к входному файлу?Это то, что у меня сейчас, но это дает мне эту ошибку - FileNotFoundError: [Errno 2] No such file or directory:

    dirc = os.path.dirname("..")
    filename = os.path.join(dirc,"/input/input_file.txt")


    f =  open(filename, "r")

1 Ответ

0 голосов
/ 26 февраля 2019

Кажется, вопрос состоит в том, как получить абсолютный путь к файлу Unix в pythonВ нем указан относительный путь, но согласно коду относительный путь известен и равен ../input/input_file.txt.Задача, о которой идет речь, как объяснено в вопросе, не требует этого и может быть легко выполнена с использованием относительных путей, которые известны в соответствии с предпосылкой (см. примечание ниже).Тем не менее, поскольку основной вопрос заключается в том, чтобы найти абсолютные пути и использовать их для решения этой проблемы, на это я и отвечу.

В вашем коде две проблемы.

  1. os.path.dirname() не возвращает абсолютный путь, который вы ищете.Вместо этого он возвращает компонент каталога данных путей, который в данном случае является пустой строкой (поскольку указанный вами путь содержит только файл (.. считается как файл). Вместо этого вы захотите использовать os.path.abspath().
  2. os.path.join() игнорирует все элементы, которые предшествуют последнему абсолютному пути. Поскольку "/input/input_file.txt" имеет форму абсолютного пути (начиная с /), он игнорирует dirc.предоставить относительные пути к этой функции без косой черты.

Всего:

import os
dirc = os.path.abspath("..")
filename = os.path.join(dirc, "input/input_file.txt")
f =  open(filename, "r")
print([line for line in f])
f.close()

Обратите внимание , что вам не нужен абсолютный путь. Вы достигнетето же самое, выполнив:

f =  open("../input/input_file.txt", "r")
print([line for line in f])
f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...