Web2py应用程序:如何在控制器中引用.yaml文件?

时间:2014-06-27 04:55:29

标签: python-2.7 yaml web2py

我在web2py下有一个在线运行的应用。现在,我要在web2py服务器上的控制器文件names.yml中添加需要调用的(default.py)文件。我应该在哪里保留.yml/.yaml个文件。目前,我已使用default/names.yml将其保留在视图中,但是当我在default.py中调用它时,如:

dicttagger = DictionaryTagger([ 'default/names.yml', 'default/surname.yml'])

我没有这样的文件错误。 也在下面尝试过:

dicttagger = DictionaryTagger([ 'views/default/names.yml', 'views/default/surname.yml'])

同样的错误

类快照如下:

class DictionaryTagger(object):

    def __init__(self, dictionary_paths):
        files = [open(path, 'r') for path in dictionary_paths]
        dictionaries = [yaml.load(dict_file) for dict_file in files]
        map(lambda x: x.close(), files)

有关如何执行此操作的任何建议,或者我在we2py中使用yaml / yml文件时出错并且它无法在联机托管的web2py应用中运行?

问题2

谢谢你。它解决了一个错误,但我不确定如何将nltk.download()添加到我的托管应用程序中。我一直得到以下错误。你能来看看: 追溯 1。 2。 3。 4。 5。 6。 7。 8。 9。 10。 11。 12。 13。 Traceback(最近一次调用最后一次):   File" /home/prakashsukhwal/web2py/gluon/restricted.py" ;,第220行,受限制     exec ccode在环境中   文件" /home/prakashsukhwal/web2py/applications/Sensiva/controllers/default.py" ;,第4行,在     nltk.download()   文件" /usr/local/lib/python2.7/dist-packages/nltk/downloader.py" ;,第644行,下载     self._interactive_download()   文件" /usr/local/lib/python2.7/dist-packages/nltk/downloader.py",第958行,在_interactive_download中     DownloaderShell(个体经营).RUN()   文件" /usr/local/lib/python2.7/dist-packages/nltk/downloader.py" ;,第981行,在运行中     user_input = raw_input(' Downloader>')。strip() EOFError:读取一行时的EOF 错误快照帮助 (读取线时的EOF)

检查属性

文件/home/prakashsukhwal/web2py/gluon/restricted.py限制在第220行代码参数变量

文件/home/prakashsukhwal/web2py/applications/Sensiva/controllers/default.py在第4行代码参数变量

文件/usr/local/lib/python2.7/dist-packages/nltk/downloader.py下载第644行代码参数变量

文件/usr/local/lib/python2.7/dist-packages/nltk/downloader.py在_interactive_download第958行代码参数变量

文件/usr/local/lib/python2.7/dist-packages/nltk/downloader.py在第981行运行代码参数变量

函数参数列表

(个体=)

代码列表

def run(self):
    print 'NLTK Downloader'
    while True:
        self._simple_interactive_menu(
            'd) Download', 'l) List', ' u) Update', 'c) Config', 'h) Help', 'q) Quit')
        user_input = raw_input('Downloader> ').strip()

        if not user_input: print; continue
        command = user_input.lower().split()[0]
        args = user_input.split()[1:]
        try:

变量

user_input undefined builtinraw_input ).strip undefined 上下文

1 个答案:

答案 0 :(得分:0)

您可以将文件存储在任何位置,但如果您正在使用Python open功能,则需要为其提供完整路径,而不是相对于web2py应用程序文件夹的路径。相反,尝试:

import os

dicttagger = DictionaryTagger([os.path.join(request.folder, 'views',
                                            'default', 'names.yml'),
                               ...])