¿Cómo abrir un archivo en el directorio principal en python en AppEngine?

¿Cómo abrir un archivo en el directorio principal en python en AppEngine?

Tengo un módulo de archivo de Python / mod.py con el siguiente código

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

data.yml está en el directorio principal del módulo. El error que recibo es

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

Estoy utilizando AppEngine SDK 1.3.3.

¿Hay una solución para esto?

La función open funciona en relación con el directorio de trabajo del proceso actual, no con el módulo desde el que se llama. Si la ruta debe ser relativa al módulo, haga esto:

 import os.path f = open(os.path.dirname(__file__) + '/../data.yml') 

Al encontrar esta pregunta y no estar satisfecho con la respuesta, encontré una solución diferente. Tomó lo siguiente para obtener lo que quería.

  1. Determine el directorio actual usando os.path.dirname :

    current_directory = os.path.dirname(__file__)

  2. Determine el directorio padre usando os.path.split :

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

  3. Unirse a parent_directory con cualquier subdirectorio:

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

  4. Abre el archivo:

    open(file_path)

Combinados juntos:

 open(os.path.join(os.path.split(os.path.dirname(__file__))[0], 'path', 'to', 'file')