Python 如何在flask中正确读取文件

Python 如何在flask中正确读取文件,python,flask,Python,Flask,我想将一个列表传递给Jinja,它可以迭代并填充select字段的值。我正在努力正确构建用于正确填充选择字段的列表 我拥有的数据是从文本文件中读取的字符串列表。文本文件中的数据采用以下格式 ['Afghanistan', 'Albania', 'Algeria'] 我想在jinja模板中迭代这些元素并填充下拉列表。我的jinja模板如下所示 <select name="country"> {% for country in countryList %} &

我想将一个列表传递给Jinja,它可以迭代并填充select字段的值。我正在努力正确构建用于正确填充选择字段的列表

我拥有的数据是从文本文件中读取的字符串列表。文本文件中的数据采用以下格式

['Afghanistan', 'Albania', 'Algeria']
我想在jinja模板中迭代这些元素并填充下拉列表。我的jinja模板如下所示

<select name="country">
   {% for country in countryList %}    
      <option value="">{{country}}</option>
   {% endfor %}
</select>
但在金贾,每件事都是一次读一个字。 我试过这个

lines = tuple(open(filename, 'r'))
但这也不能解决问题。在选择字段中,我只看到“[”

我尝试过的其他事情

with open(filename, 'r') as f:        
        array = []
        for line in f:
            array.append(line)


with open(filename, 'r') as f: 
     data_list = []       
     data_list = f.read().replace('\n', ' ')

我知道这不是Jinja或flask问题。但不确定如何从文本文件中正确读取数据,使其成为一个列表。我是否可以尝试一些可能会导致文本文件出现问题的方法?

data\u list
是一个
字符串,因此迭代器将遍历每个字符。要获取列表,可以运行
eval(数据列表)
,但这可能不安全。您应该以不同的方式构造文本文件,在值之间使用一些除名符,然后可以将
数据列表设置为
f.read().split('\n')
,例如,如果每个值都通过换行进行除名,即:

Afghanistan
Albania
Algeria

将输入文件的格式更改为:

Afghanistan
Albania
Algeria
然后您的代码变成:

with open(filename, 'r') as f:        
    country_list = [line.strip() for line in f]

return render_template('signup.html', countryList= country_list)

然后,您的模板文件应该可以正常工作,而不进行任何更改。

您可以控制文本文件的格式吗?是的,我可以更改格式。更改文件格式后,它将继续工作。谢谢!
with open(filename, 'r') as f:        
    country_list = [line.strip() for line in f]

return render_template('signup.html', countryList= country_list)