Как открыть файл в родительском каталоге на python в AppEngine? - PullRequest
14 голосов
/ 02 мая 2010

Как открыть файл в родительском каталоге на python в AppEngine?

У меня есть файл python module / mod.py со следующим кодом

f = open('../data.yml')
z = yaml.load(f)
f.close()

data.yml находится в родительском каталоге модуля. Я получаю ошибку

IOError: [Errno 13] file not accessible: '../data.yml'

Я использую AppEngine SDK 1.3.3.

Есть ли способ обойти это?

Ответы [ 2 ]

24 голосов
/ 02 мая 2010

Функция open работает относительно текущего рабочего каталога процесса, а не модуля, из которого она вызвана. Если путь должен быть относительным к модулю, сделайте это:

import os.path
f = open(os.path.dirname(__file__) + '/../data.yml')
4 голосов
/ 17 сентября 2015

Столкнувшись с этим вопросом и не удовлетворившись ответом, я наткнулся на другое решение. Чтобы получить то, что я хотел, потребовалось следующее.

  1. Определите текущий каталог, используя os.path.dirname:

    current_directory = os.path.dirname(__file__)

  2. Определить родительский каталог, используя os.path.split:

    parent_directory = os.path.split(current_directory)[0] # Repeat as needed

  3. Присоединить parent_directory с любыми подкаталогами:

    file_path = os.path.join(parent_directory, 'path', 'to', 'file')

  4. Открыть файл:

    open(file_path)

Объединены вместе:

open(os.path.join(os.path.split(os.path.dirname(__file__))[0], 'path', 'to', 'file')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...