烧瓶pythonanywhere服务器中的文件结构?

时间:2017-05-26 21:59:58

标签: csv web-applications flask structure pythonanywhere

我开始学习如何在pythonanywhere工作,所以我遇到了一些问题...... 我的网络应用程序具有以下结构:

    /home/mentor/mysite/servidor/ here I've run.py and the folder app

    inside app there's init.py , views.py and the folders: static,scripts,templates

我的问题是,在网络内部有一个表单,当有人点击按钮时,在views.py中调用脚本中的函数。该函数需要读取.csv文件(我将该文件保存在... / servidor /中)。

但是网页没有运行,它返回500内部服务器错误,因为OSError:File b'Names.csv'不存在。 为什么我能解决这个问题?我需要把文件放在哪里?这是run.py或WSGI配置文件的问题吗?

感谢的!

PD。:代码

在viwes.py中:

 from .scripts.file import function

 @app.route('/func', methods=['POST'])
 def resp():
     l=[request.form['d1'].....]
     f=function(l)
     .....
脚本文件夹中的file.py中的

  import pandas as pd
  def function(l):
      df=pd.read_csv('Names.csv') #Here is the problem!
      .....

2 个答案:

答案 0 :(得分:2)

您可以使用__file__打开相对于Python模块的文件。

import os


def open_here(filename, encoding='UTF-8'):
    """Open a file in the same directory as this module."""
    here = os.path.dirname(os.path.abspath(__file__))
    return open(os.path.join(here, filename), encoding=encoding)


# example snippet
def foo():
    with open_here('my_file') as f:

答案 1 :(得分:0)

问题是python默认使用的工作目录是主文件夹,所以路径必须来自那里。

要从wsgi脚本运行时访问它,最安全的事情是使用os。尝试:

import os

# ...

pd.read_csv(os.getcwd(), 'servidor', 'Names.csv')

您还可以在pythonanywhere的Web控制台中更改工作目录,以直接引用项目(在您的案例中为'servidor')并直接访问' Names.csv'试。