Python 更改目录 Google App Engine
我有一个用Python写的网页应用,运行在Google App Engine上;到目前为止只是在我的本地电脑上测试。我的脚本需要读取位于不同文件夹中的文本文件。所以在我的Python脚本中,我会简单地用os.chdir("./"+subdirectory_name)来切换到相应的文件夹,然后开始打开和读取文件,利用这些文本进行分析。不过,当我尝试把它移到App Engine上时,就不能这样做了。
我想我需要对app.yaml做一些修改,但之后就卡住了。有没有人能详细指导我一下?
根据下面的回答,我已经解决了这个部分,但我对app.yaml的结构还有一个后续问题。我把文件夹设置成了以下结构,我想知道在部署项目时,我需要在app.yaml文件中写些什么才能让它正常工作(现在在本地电脑上运行得很好)。
主文件夹:
- python_my_app.py
- app.yaml
- text_file1
- text_file2
- text_file3
- subfolder1_with_10_text_files_inside
- subfolder2_with_10_text_files_inside
- subfolder3_with_10_text_files_inside
...我该如何在app.yaml中指定这个结构?如果现在在本地电脑上运行正常,我还需要在代码中做什么改动吗?
2 个回答
1
你可以把你的文本文件打包到应用程序里,然后可以像这样做:
path = os.path.join(os.path.dirname(__file__), 'subdir', 'file')
file = open(path)
1
其实你根本不需要改变你的工作目录就能读取文件。可以直接使用绝对路径。
把当前文件的位置当作起点,从这里开始处理所有相对路径:
import os.path
HERE = os.path.dirname(os.path.abspath(__file__))
somefile = os.path.abspath(os.path.join(HERE, 'subfolder1_with_10_text_files_inside /somefile.txt'))
如果你想读取一些静态文件,记得要把这些文件的 application_readable
标志设置上,否则谷歌只会把它们上传到内容分发网络,而不是上传到应用引擎上。