如何在AppEngine的python中打开父目录中的文件?

时间:2010-05-02 11:09:41

标签: python google-app-engine

如何在AppEngine的python中打开父目录中的文件?

我有一个python文件模块/ 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。

有解决方法吗?

3 个答案:

答案 0 :(得分:23)

open函数相对于当前进程工作目录而不是从其调用的模块进行操作。如果路径必须是模块相关的,请执行以下操作:

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

答案 1 :(得分:3)

遇到这个问题但对答案不满意,我遇到了另一种解决方案。它采取了以下措施来获得我想要的东西。

  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)

  5. 结合在一起:

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

答案 2 :(得分:1)

?? 替代方案 ??

您还可以使用 sys 模块获取当前工作目录。
因此,做同样事情的另一种选择是:

import sys
f = open(sys.path[0] + '/../data.yml')