我在Google App Engine上运行用Python编写的webapp;到目前为止只在我的localhost中测试。我的脚本需要读取位于各种目录中的文本文件。因此,在我的Python脚本中,我只需使用os.chdir(" ./" + subirectory_name),然后开始打开并读取文件并使用文本进行分析。但是,在尝试将其移至App Engine时,我无法做到这一点。
我认为我需要对app.yaml进行某些更改,但是之后我就被卡住了。任何人都可以通过这种方式彻底地介绍我吗?
从下面的答案中,我能够解决这个问题,但我有一个关于app.yaml结构的后续问题。我的文件夹设置如下,我想知道在部署项目时我需要在app.yaml文件中放置什么才能使它工作(它现在在localhost上完美运行)。
Main_Folder:
...如何在app.yaml中指定此结构,如果现在在localhost上工作,我是否需要更改代码中的任何内容?
答案 0 :(得分: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
标记,否则Google只会将其上传到其内容投放网络,而不是应用引擎。
答案 1 :(得分:1)
您可以将文本文件打包到应用程序中,然后执行以下操作:
path = os.path.join(os.path.dirname(__file__), 'subdir', 'file')
file = open(path)