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

33 投票
5 回答
65136 浏览
提问于 2025-04-15 22:15

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

我有一个Python文件,路径是module/mod.py,里面有以下代码:

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

data.yml文件在module的父目录中。我遇到的错误是:

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

我正在使用AppEngine SDK 1.3.3。

有没有什么解决办法呢?

5 个回答

5

另一种解决方案

你也可以使用 sys 模块来获取当前的工作目录。
所以,另一种做同样事情的方法是:

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

我遇到了这个问题,但对之前的回答不太满意,所以找到了一个不同的解决方案。为了实现我想要的效果,我做了以下几步。

  1. 首先,使用 os.path.dirname 来确定当前目录:

    current_directory = os.path.dirname(__file__)

  2. 接着,使用 os.path.split 来找出父目录:

    parent_directory = os.path.split(current_directory)[0] # 根据需要重复这一步

  3. 然后,把父目录和任何子目录连接起来:

    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')
56

open 函数是根据当前程序的工作目录来操作的,而不是根据它被调用的模块。如果你想让路径相对于模块本身,可以这样做:

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

撰写回答