2015-06-21 101 views
2

我正在开始使用flask,并且正在将我的应用程序部署到openshift。openshift上的Flask项目根目录

我的应用程序代码:

def get_users(): 
    f = open('./users.txt') 
    .... 

当我运行:

$ rhc tail flaskpq 

我看到:

[Sun Jun 21 09:05:20 2015] [error] [client 127.2.78.1] f = open('./user.txt') [Sun Jun 21 09:05:20 2015] [error] [client 127.2.78.1] IOError: [Errno 2] No such file or directory: './users.txt'

我怀疑是我的亲戚参考我的项目users.txt根目录在部署到openshift时不再有效。它在win7本地运行良好。解决这个问题的最好方法是什么?

回答

2

你应该能够做这样的事情,以获取应用程序的目录:

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

这是我在Heroku做。不要忘记____file___将是该文件所在的目录。这可能是也可能不是您的应用程序根文件夹。

+0

谢谢,这似乎工作。 – user61629

1

您通常不应该在纯字符串中编写路径。跨平台工作时这很危险。请使用osos.path中的功能。

1

不要忘记,在openshift中,您只能在$OPENSHIFT_DATA_DIR之下创建/写入文件,所以我个人使用以下方法。

DATA_DIR = os.environ.get('OPENSHIFT_DATA_DIR', ".") 
def get_users(): 
    f = open(os.path.join(DATA_DIR,'users.txt') 

如果需要,我使用rhc scp复制文件以更正位置。