我开始使用烧瓶,并且我已将我的应用部署到openshift。
我的应用代码:
def get_users():
f = open('./users.txt')
....
我跑的时候:
$ rhc tail flaskpq
我明白了:
[Sun Jun 21 09:05:20 2015] [错误] [客户端127.2.78.1] f = 打开(' ./ user.txt')[Sun Jun 21 09:05:20 2015] [错误] [客户端 127.2.78.1] IOError:[Errno 2]没有这样的文件或目录:' ./ users.txt'
我怀疑我在项目根目录中对users.txt的相对引用在部署到openshift时不再有效。它在win7上本地工作正常。解决这个问题的最佳方法是什么?
答案 0 :(得分:2)
你应该可以做这样的事情来获取应用程序的目录:
user_file = os.path.abspath(os.path.join(os.path.dirname(__file__), "./users.txt"))
这是我在heroku上做的事情。不要忘记____file___将是文件所在的目录。这可能是也可能不是您的应用程序根文件夹。
答案 1 :(得分:1)
通常不应该用纯字符串编写路径。跨平台工作时这很危险。请使用os
和os.path
中的功能。
答案 2 :(得分: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
复制文件以更正位置。