我开始学习如何在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!
.....
答案 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'试。