How to open a file in the parent directory in python in AppEngine?

The open function operates relative to the current process working directory, not the module it is called from. If the path must be module-relative, do this:

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

Having encountered this question and not being satisfied with the answer, I ran across a different solution. It took the following to get what I wanted.

  1. Determine the current directory using os.path.dirname:

    current_directory = os.path.dirname(__file__)

  2. Determine the parent directory using os.path.split:

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

  3. Join parent_directory with any sub-directories:

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

  4. Open the file:

    open(file_path)

Combined together:

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