使用flask打开python Web应用程序上的文本文件

时间:2013-05-30 11:12:52

标签: python web-applications file-io flask

我有一个分析文本数据的Python应用程序,目的是找到文本的主题。

我需要做的是使这个应用程序成为一个Web应用程序。

我将apache,mod_wsgi和flask框架设置在一起,我正确地创建了一个简单的应用程序,显示一切正常。

但是当我尝试调用open()函数时,我收到内部服务器错误。 我确信路径是正确的。我在一个独立的应用程序上尝试它,没有任何问题。

你有什么问题的线索吗?

编辑: 我现在尝试的代码与我的应用程序无关。

这是主要的烧瓶文件

    #!/usr/bin/python

    from flask import Flask,request,render_template


    import T_testing

    app = Flask(__name__)


    @app.route('/pref',methods = ['GET','POST'])  
    def pref():
        error = None
        return render_template('layout.html',error = error)

    @app.route('/running', methods = ['GET','POST'])
    def running ():
      error = None

      if request.method == 'POST':  
        dat = request.form['dat']
        alg = request.form['alg']
        dist = request.form['dist']
        threshold = request.form['threshold']
        numoc = request.form['numoc']


        string = T_testing.run_function(dat,alg,dist,threshold,numoc)
        return string


    if __name__ == '__main__':
        app.config['TRAP_BAD_REQUEST_ERRORS'] = True
        app.run(host='0.0.0.0',port=5000,debug=True)

这是T_testing.py

def run_function(st1,st2,st3,st4,st5):
        f = open('/home/christos/public/apps/flaskt/txt_files/textdata.txt','r')
        f.close()
        tablist = [st1,st2,st3,st4,st5]
        strlist = []
        for i in range( 0,len(tablist),1):
            strlist.append(str(tablist[i]))
        return "Choises ARE: "+strlist[0]+" AND "+strlist[1]+" AND "+strlist[2]+" AND "+strlist[3]+" AND "+strlist[4]+" !!!!"

(不要判断代码,我只是测试..) 正如您所看到的,我从layout.html获得了一些偏好,但现在我只是打印它们。

在T_testing中没有关于open()和close()的2行,没有问题。我顺便使用Ubuntu。正如我所说,这条路径正在开发一个独立的python应用程序。

编辑: 好的,所以我没有解决我的问题。 有没有人在烧瓶Web应用程序中使用open()函数? 我想知道我是否应该继续尝试或找到另一种方式来制作我的网络应用程序..

编辑: 我还尝试使用open('file-name.txt','w')创建一个新文件,以检查路径是否错误但又一次出现错误......

2 个答案:

答案 0 :(得分:0)

Apache运行的用户很可能没有读取文本文件的权限 - 您需要chmod相关文件以确保它是可读的。

$ chmod o+r /path/to/your/file

答案 1 :(得分:0)

尝试将textdata.txt文件复制到/tmp目录,确认它具有全局读取权限,然后更改您的开放路径:

  f = open('/tmp/textdata.txt','r')

如果成功,那么您可能在原始路径的某处遇到了权限问题。