使用 Python 实现文件上传并处理

72 阅读2分钟

有一位朋友希望创建一个网站,可以接受文本文件作为输入,并读取文件中的参数传递给 Python 脚本,最后在页面上输出脚本的执行结果。由于这位朋友只有少量的 Python 编程经验,他寻求了一种简单易行的方法来实现这个项目。

2、解决方案

可以使用 Flask,一个轻量级的 Python Web 框架来解决这个问题。Flask 非常简单、强大且直观,非常适合小型项目。

示例实现

1. 创建 Python 脚本

在文件 script.py 中,编写以下 Python 脚本:

from flask import Flask, render_template

app = Flask(__name__)
app.config.from_object(__name__)

@app.route('/')
def index():
    return render_template('index.html', message='Hello')

if __name__ == '__main__':
    app.run(host='0.0.0.0')
  • 这个脚本创建了一个 Flask 应用,并在根路由 / 上返回一个简单的 "Hello" 消息。

2. 创建 HTML 模板

在文件 index.html 中,编写以下 HTML 模板:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
  <head>
    <title>Test</title>
  </head>

  <body>
  {% if message != 'nope' %}
    {{ message }}
  {% endif %}
  </body>
</html>
  • 这个模板很简单,它会在页面上显示 "Hello" 消息。

3. 运行应用程序

在命令行中运行以下命令:

python script.py
  • 这将启动 Flask 应用程序。

4. 访问网站

在浏览器中访问 http://127.0.0.1:5000,你应该会看到 "Hello" 消息。

文件上传处理

为了实现文件上传处理,可以在 Flask 应用中添加以下代码:

from flask import request

@app.route('/upload', methods=['POST'])
def upload():
    if request.method == 'POST':
        file = request.files['file']
        # 读取并处理文件内容
        return 'Success'
  • 这段代码可以接收一个名为 "file" 的文件上传。

完整代码

将以上所有代码组合在一起,完整的代码如下:

from flask import Flask, render_template, request

app = Flask(__name__)
app.config.from_object(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    if request.method == 'POST':
        file = request.files['file']
        # 读取并处理文件内容
        return 'Success'

if __name__ == '__main__':
    app.run(host='0.0.0.0')
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
  <head>
    <title>Test</title>
  </head>

  <body>
    <form action="/upload" method="POST" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="Upload">
    </form>
  </body>
</html>
  • 在这个完整的代码中,增加了文件上传表单和处理文件上传的代码。

现在,你就可以使用这个 Flask 应用来实现文件上传并处理了。