2017-11-25 11 views
0

私はPythonのFlaskフレームワークを使ってウェブサイトを構築しようとしています。Flaskで.txtファイルを開くには?

私はApache2を搭載したLinuxのUbuntuサーバーです。

私のウェブサイトで誰かがURL "/Elv_1.html"を入力すると、.txtファイルを開き、値を取得してpygalを使用してグラフを作成したいとします。ここに私のコードは次のとおりです。

@app.route('/river_1.html') 
def riv_1(): 
    try: 
     document = open('temp.txt','r') 

     temp_list = [] 
     for n in document: 
      n = n.rstrip('\n') 
      n = int(n) 
      temp_list.append(n) 

     document.close() 

     graf = pygal.Line(title=u'Tempt last 24h') 
     graf.x_labels = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24) 
     graf.add('Temp', temp_list) 
     graf = graf.render_data_uri() 

     return render_template('river_1.html', graf=graf) 
    except Exception, e: 
     return str(e) 

if __name__ == '__main__': 
    app.run(debug=True) 

ファイル'temp.txt'__init__.pyファイルと同じディレクトリにあります。 __init__.pyはコードが由来するFlaskアプリです。

ローカルホストを使用してサーバーを実行しているコンピュータでこれを行うと、正常に動作します。ファイルを見つけることが表示されない理由として

[Error 2] No such file or directory: 'temp.txt'

任意の提案:しかし、私は私のLinuxサーバにこれをアップロードし、その特定のURLを入力しようとすると、それは次のエラーが表示さ?

+1

ファイルもサーバーに存在しますか?つまり、Pythonプログラムだけでなく、 'temp.txt'もサーバーにアップロードしましたか? – janos

+0

ファイルがフラスコファイルと同じディレクトリにないようです。それが問題であるかどうかを確認してください。これらの問題は通常、間違った名前や間違ったパスのために見つけられます – VarunJoshi129

+0

ローカルでアプリケーションを実行すると、それらは別としてありますが、サーバー上では 'wsgi server'を使ってアプリケーションを呼び出すことができます!)、そこにはPythonのパスには少し違いがあり、あなたはファイルに 'path'を与える方法を変更します。 – senaps

答えて

0

ファイルへのパスを指定するときに、osモジュールを使用してみてください。私はあなたがlocalhostで実行時にWindows PCを使用しているasumingですか?

import os 
document_path = os.getcwd()+'temp.txt' 
document = open(documnet_path, 'r') 
0

サーバーがそのディレクトリから実行されていることを確認してください。したがって、以下のような構造をしている場合は、ホームディレクトリ(/home/username/)にあるので、単に端末を開いてserver/__init__.pyと入力することはできません。あなたは
os.pathのためのpythonのドキュメントを参照してください (のpython 3.5.2でテスト済み)あなたはどこか別の場所からそれを実行したい場合は、os.path.abspath(os.path.dirname(__file__)) + '/temp.txt')からファイルを開いて実行し、servercdに必要と./__init__.py

/home/ 
    username/ 
    server/ 
     __init__.py 
     temp.txt 

が実行したり、 。

関連する問題