Python 3.x 如何使用Flask将文本文件读入.py文件,然后获得逐行数组?
有关我的命令行输出,请参见此处:() 它说/static/poemInput.txt文件不存在。。但正如您所看到的,当我执行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
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')
。