首页 文章

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

提问于
浏览
0

我有一个在 web2py 下在线运行的应用程序 . 现在,我正在添加 names.yml 文件,我需要在web2py服务器上的控制器文件 (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()添加到我的托管应用程序中 . 我一直得到以下错误 . 你能看一下:Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Traceback(最近一次调用最后一次):文件“/ 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(self).run()文件”/usr/local/lib/python2.7/dist-packages/nltk/downloader.py“,第981行,在运行user_input = raw_input( 'Downloader>') . totrip()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

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

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

相关问题