Чтение текстового файла из файла ввода - PullRequest
1 голос
/ 01 марта 2020

Я из и в форме пользователь может загружать файлы. Я использую flask, и я пытаюсь получить данные из текстового файла, который пользователь хочет загрузить.

Есть ли способ прочитать данные внутри текстового файла? Я пытался открыть файл file = open(), но потом понял, что у меня нет пути. Это отличается от чтения файла на вашем локальном компьютере.

@app.route('/admin',methods=['GET','POST'])
def admin_panel():
    if request.method == 'GET':
        return render_template('adminpanel.html')

    if request.method == 'POST':
        email = request.form['email']
        file_data = request.files['file']
        file_name = secure_filename(file_data.filename)
        file_data.save(os.path.join("system","files","text",file_name))
        with open("system/files/text/file_name") as f:
            file_content = f.read()
            print(file_content)
        file = File(file_data)
        file.read_file_dif()

Ну, конечно, этот код не работает. Но это идея. Кто-нибудь есть идеи, как я могу прочитать текстовый файл из тега входного файла?

HTML TAG

      <label for="myfile">Select a file:</label>
      <input type="file" id="myfile" name="file">

Ответы [ 2 ]

3 голосов
/ 01 марта 2020

Лучший способ - сначала сохранить файл, а затем прочитать его, чтобы получить текст. Как правило, вы устанавливаете переменную UPLOAD_FOLDER с путем сохранения. Затем в flask используйте следующую команду для сохранения файла:


file_path = os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(f.filename))
f = request.files['file']
f.save(file_path)
# This would save the file. Now to read simply use the normal way to read files in Python

with open(file_path, 'r') as f:
    file_content = f.read()
# Rest of the processing logic

Обратите внимание, что путь указан относительно вашего текущего рабочего каталога, который обычно составляет root вашего проекта. Кроме того, будьте осторожны при хранении и чтении файлов от ненадежных пользователей.

Лучшим местом для хранения этих файлов было бы место, отличное от вашего проекта root. Где-то может быть каталог данных, через который вы можете настроить Nginx (или любой другой передний прокси-сервер) для обслуживания загруженных файлов

0 голосов
/ 01 марта 2020

Это мое решение моей проблемы

from werkzeug.utils import secure_filename
import os

class File():
def __init__(self,file):
    self.file = file

def read_file(self):
    file_name = secure_filename(self.file.filename)
    self.file.save(os.path.join("app", "static", file_name))
    with open(f"app/static/{file_name}") as f:
        email_list = f.read().splitlines()
    return email_list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...