如何在AppEngine中用Python打开父目录的文件?
如何在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
我遇到了这个问题,但对之前的回答不太满意,所以找到了一个不同的解决方案。为了实现我想要的效果,我做了以下几步。
首先,使用
os.path.dirname
来确定当前目录:current_directory = os.path.dirname(__file__)
接着,使用
os.path.split
来找出父目录:parent_directory = os.path.split(current_directory)[0] # 根据需要重复这一步
然后,把父目录和任何子目录连接起来:
file_path = os.path.join(parent_directory, 'path', 'to', 'file')
最后,打开这个文件:
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')