Python更改目录Google App Engine

时间:2014-05-10 07:07:53

标签: python google-app-engine

我在Google App Engine上运行用Python编写的webapp;到目前为止只在我的localhost中测试。我的脚本需要读取位于各种目录中的文本文件。因此,在我的Python脚本中,我只需使用os.chdir(" ./" + subirectory_name),然后开始打开并读取文件并使用文本进行分析。但是,在尝试将其移至App Engine时,我无法做到这一点。

我认为我需要对app.yaml进行某些更改,但是之后我就被卡住了。任何人都可以通过这种方式彻底地介绍我吗?

从下面的答案中,我能够解决这个问题,但我有一个关于app.yaml结构的后续问题。我的文件夹设置如下,我想知道在部署项目时我需要在app.yaml文件中放置什么才能使它工作(它现在在localhost上完美运行)。

Main_Folder:

  • 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中指定此结构,如果现在在localhost上工作,我是否需要更改代码中的任何内容?

2 个答案:

答案 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)