Python 3.x 如何使用Flask将文本文件读入.py文件,然后获得逐行数组?

Python 3.x 如何使用Flask将文本文件读入.py文件,然后获得逐行数组?,python-3.x,flask,url-for,Python 3.x,Flask,Url For,有关我的命令行输出,请参见此处:() 它说/static/poemInput.txt文件不存在。。但正如您所看到的,当我执行ls static时,它显然存在。我如何命名文件有问题吗 背景: 我对flask非常陌生,但我有一个python应用程序,我想在线部署。我正在尝试导入我在应用程序中使用的文本文件,但是找不到它 我知道文本文件应该在静态文件夹中,我根据需要使用了open_url 我正在获取指定的错误,因此我的with open块位于带有.app.test\u request\u contex

有关我的命令行输出,请参见此处:()

它说/static/poemInput.txt文件不存在。。但正如您所看到的,当我执行
ls static
时,它显然存在。我如何命名文件有问题吗

背景: 我对flask非常陌生,但我有一个python应用程序,我想在线部署。我正在尝试导入我在应用程序中使用的文本文件,但是找不到它

我知道文本文件应该在静态文件夹中,我根据需要使用了open_url

我正在获取指定的错误,因此我的
with open
块位于带有.app.test\u request\u context()的
块中:

编辑 我尝试了Luan Nguyen的建议,并使用了
app.open_resource()
函数,但随后我得到了一个
UnicodeDecodeError:“ascii”编解码器无法解码第13位的字节0xe2:序号不在范围内(128)
。通过将编码设置为latin1,在python的open函数中(与我的原始代码一样)修复了这一问题。。。如何使用flask的open_resource函数实现此功能??我尝试执行
f.encode('latin1')
,但出现错误:
\u io.TextIOWrapper'对象没有属性“encode”


本质上:如何使用Flask将文本文件读入.py文件,然后获得逐行数组?

问题在于

问题在于您的
open
呼叫
url\u for
返回此字符串
'/static/poemInput.txt'
。当您将此字符串直接放入Python的
open
中时,它将在
/static/poemInput.txt
处找到文件,而不是在
/static/poemInput.txt

解决方案

考虑到您可能有一个正在运行的Flask实例,您应该使用Flask的函数。在这种结构中:

/myapplication.py
/schema.sql
/static
    /poemInput.txt
    /style.css
/templates
    /layout.html
    /index.html
你可以这样做:

with app.open_resource('static/poemInput.txt') as f:
    contents = f.read()
    do_something_with(contents)

仅针对初学者,当您列出
~/Downloads/poem/static
目录时,错误显示
/static/poemInput.txt
不存在…请查看我的编辑!谢谢:)我试过了,但现在我得到了一个“UnicodeDecodeError:'ascii'编解码器无法解码第13位的字节0xe2:序号不在范围(128)”中。通过将编码设置为latin1,在python的open函数中修复了这一问题。。。如何使用flask的open_resource函数实现此功能??我试着做f.encode('latin1'),但我得到了错误:“\u io.TextIOWrapper'对象没有属性'encode'”@user699290您应该能够将
contents=f.read()
更改为
contents=f.read().decode('latin1')