Python openshift上的Flask项目根目录

Python openshift上的Flask项目根目录,python,flask,openshift,Python,Flask,Openshift,我开始使用flask,并将我的应用程序部署到openshift 我的应用程序代码: def get_users(): f = open('./users.txt') .... 当我跑步时: $ rhc tail flaskpq 我明白了: [Sun Jun 21 09:05:20 2015][error][client 127.2.78.1]f= 打开('./user.txt')[Sun Jun 21 09:05:20 2015][error][client 127.2.78

我开始使用flask,并将我的应用程序部署到openshift

我的应用程序代码:

def get_users():
    f = open('./users.txt')
    ....
当我跑步时:

$ rhc tail flaskpq
我明白了:

[Sun Jun 21 09:05:20 2015][error][client 127.2.78.1]f= 打开('./user.txt')[Sun Jun 21 09:05:20 2015][error][client 127.2.78.1]IOError:[Errno 2]没有这样的文件或目录:'./users.txt'


我怀疑我对项目根目录中users.txt的相对引用在部署到openshift时不再有效。它在win7本地运行良好。修复此问题的最佳方法是什么?

您应该能够执行类似操作以获取应用程序的目录:

user_file = os.path.abspath(os.path.join(os.path.dirname(__file__), "./users.txt"))

这就是我在heroku上所做的。不要忘记,文件将是文件所在的目录。这可能是也可能不是您的应用程序根文件夹。

通常不应以纯字符串形式写入路径。在跨平台工作时,这是危险的。请使用
os
os.path
中的函数

不要忘记,在openshift上,您只能在
$openshift\u DATA\u DIR
下创建/写入文件,因此我个人使用以下方法

DATA_DIR = os.environ.get('OPENSHIFT_DATA_DIR', ".")
def get_users():
    f = open(os.path.join(DATA_DIR,'users.txt')
如果需要,我使用
rhc scp
将文件复制到正确的位置