Python 从输入类型文件读取文本文件

Python 从输入类型文件读取文本文件,python,html,flask,Python,Html,Flask,我已经从用户可以上传文件的形式。 我使用的是flask,我想做的是从用户选择上传的文本文件中获取数据 有没有办法读取文本文件中的数据? 我试图打开file=open,但后来我意识到我没有路径。 它与在本地机器上读取文件不同 @app.route('/admin',methods=['GET','POST']) def admin_panel(): if request.method == 'GET': return render_template('adminpanel.

我已经从用户可以上传文件的形式。 我使用的是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标记


最好的方法是先保存文件,然后读取以获取文本。按照惯例,您可以设置一个UPLOAD_FOLDER变量,其中包含要保存的路径。然后,在flask中使用以下命令保存文件:

file_path=os.path.joinapp.config['UPLOAD_FOLDER'],secure_filenamef.filename f=请求.files['file'] f、 保存文件路径 这将保存文件。现在只需使用Python中读取文件的常规方法即可读取 使用openfile_路径,“r”作为f: 文件内容=f.read 其余的处理逻辑 请注意,路径是相对于当前工作目录的,该目录通常是项目的根目录。此外,在存储和读取来自不受信任用户的文件时,请小心


存储这些文件的更好地方应该是项目根目录以外的其他地方。您可以在某个地方有一个数据目录,通过该目录可以配置Nginx或任何其他前端代理来为上传的文件提供服务

最好的方法是先保存文件,然后读取以获取文本。按照惯例,您可以设置一个UPLOAD_FOLDER变量,其中包含要保存的路径。然后,在flask中使用以下命令保存文件:

file_path=os.path.joinapp.config['UPLOAD_FOLDER'],secure_filenamef.filename f=请求.files['file'] f、 保存文件路径 这将保存文件。现在只需使用Python中读取文件的常规方法即可读取 使用openfile_路径,“r”作为f: 文件内容=f.read 其余的处理逻辑 请注意,路径是相对于当前工作目录的,该目录通常是项目的根目录。此外,在存储和读取来自不受信任用户的文件时,请小心


存储这些文件的更好地方应该是项目根目录以外的其他地方。您可以在某个地方有一个数据目录,通过它可以配置Nginx或任何其他前端代理来为上传的文件提供服务

这是我解决问题的方法

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

这是我解决问题的办法

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

你能在指定的位置保存文件吗?不,我甚至不确定这是保存文件的正确方法。你知道怎么做吗?你能在指定的位置保存文件吗?不,我甚至不确定这是保存文件的正确方法。你知道怎么做吗?好的,谢谢,顺便问一下,你知道为什么在我从werkzeug导入secure_文件名并运行项目之后。它给我一个错误,它无法从werkzeug导入secure_文件名。您需要从werkzeug.utils导入secure_文件名。如果只想从werkzeug导入它,则需要将其引用为utils.secure\u文件名。我通常更喜欢从werkzeug.utils导入安全文件名的第一种方式!好的,谢谢你,顺便问一下,你知道为什么在我从werkzeug导入secure_文件名并运行项目之后。它给我一个错误,它无法从werkzeug导入secure_文件名。您需要从werkzeug.utils导入secure_文件名。如果只想从werkzeug导入它,则需要将其引用为utils.secure\u文件名。我通常更喜欢从werkzeug.utils导入安全文件名的第一种方式!