使用Python将OSS文件免费下载到本地:第三步 提供一个从ECS中下载和删除文件的接口

2023-12-20 14:40:25

在这里插入图片描述

大家好,我是水滴~~

本文将介绍了使用的知识点、以及利用 Flask 框架提供从 ECS 中下载和删除的文件接口代码、并对该代码进行详细解析、最后给出部署方案,希望能对你有所帮助!

《Python入门核心技术》专栏总目录?点这里


在上一篇文章中,我们将文件下载到了ECS中。这篇文章是我们继续讲解第三步:提供一个从ECS中下载和删除文件的接口。

1. 本文知识点

1.1 base64 模块

base64 是 Python 标准库中的一个模块,提供了对 Base64 编码和解码的功能。Base64 是一种将二进制数据转换为 ASCII 字符串的编码方式,常用于在文本协议中传输二进制数据或存储二进制数据到文本文件中。

更多介绍参见:《Base64 编码和解码(base64 模块)

1.2 os 模块

os 是 Python 标准库中的一个模块,提供了与操作系统交互的功能。通过 os 模块,您可以执行各种与文件系统、进程管理、环境变量等相关的操作。

更多介绍参见:《os 模块

1.3 Flask

Flask是一个轻量级的Python Web开发框架,它简单而灵活,适合构建小型到中型的Web应用程序。Flask提供了必要的工具和库,帮助开发者快速搭建Web应用,并具备扩展性,可以根据需求添加各种插件和扩展。

在使用前需要先安装该库,下面是安装命令:

pip install flask

1.4 PyInstaller

PyInstaller 是一个用于将 Python 应用程序打包成独立可执行文件的工具。它可以将 Python 代码及其依赖项(包括解释器)打包成单个可执行文件,这样用户可以在没有安装 Python 解释器或依赖项的情况下运行你的应用程序。你可以使用 PyInstaller 来创建跨平台的可执行文件,支持 Windows、macOS 和 Linux 等操作系统。

在使用前需要先安装该库,下面是安装命令:

pip install pyinstaller

2. 代码与解析

2.1 安装依赖

下面代码使用了 flask 第三方库,所以要提前安装它们,下面是安装指令:

pip install flask

2.2 完整代码

在项目中创建一个第三步:提供一个从ECS中下载和删除文件的接口.py Python文件,下面是完整代码:

import base64
import os

from flask import Flask
from flask import send_from_directory

app = Flask(__name__)

# 文件ECS存储路径
file_path = "/data/app/oss_download/file_list/"


# 下载文件
@app.get('/download/<filename>')
def download(filename):
    key = base64.b64decode(filename.encode()).decode()
    print("下载:" + key)
    return send_from_directory(file_path, key)


# 删除文件
@app.get('/delete/<filename>')
def delete(filename):
    try:
        key = base64.b64decode(filename.encode()).decode()
        print("删除:" + key)
        os.remove(file_path + key)
    except Exception as e:
        print(str(e))
        return 'error'
    return 'ok'


if __name__ == '__main__':
    app.run(port=8080)

2.3 代码解析

  • download方法利用 Flask 框架,提供了下载文件的路由,通过请求该路由可以将ECS中的文本下载到本地。filenamekey的base64字符串,所以需要转码才能得到原始的key

  • delete 方法利用 Flask 框架,提供了删除文件的路由,通过请求该路由可以将ECS中的文件删除。如果删除成功,则返回ok;如何有异常导致删除失败,则返回error

  • main主方法中,用于运行 Flask,绑定端口为8080,如果想绑定主机可指定host参数。该端口还要提供外网映射,以便本地计算机能够连通。

3. 部署

3.1 列出依赖项

requirements.txt是一个常用的文本文件,用于列出项目所需的所有依赖项及其版本信息。它通常用于 Python 项目,但也可以在其他项目中使用。

在项目中执行下面命令,可以列出依赖项:

pip freeze > requirements.txt

这将输出当前环境中所有安装的包及其版本信息,并将其写入requirements.txt文件中。

3.2 安装依赖项

在 Linux 服务器的项目根目录下,可以运行以下命令来安装requirements.txt中列出的所有依赖项:

pip install -r requirements.txt

这将安装所列出的所有依赖项及其指定的版本。

3.3 运行 Python 文件

第三步:提供一个从ECS中下载和删除文件的接口.py Python文件拷贝到 Linux 服务器项目根目录下,执行下面命令即可运行该 Python 文件:

python 第三步:提供一个从ECS中下载和删除文件的接口.py

如果想要后台运行,并且将print输出到指定的日志文件中,可以使用以下命令:

nohup python 第三步:提供一个从ECS中下载和删除文件的接口.py > output.log 2>&1 &

这个命令执行以下操作:

  • nohup命令用于在后台运行进程,即使终端关闭后也能继续运行。

  • 第三步:提供一个从ECS中下载和删除文件的接口.py是你要运行的Python脚本。

  • > output.log将标准输出重定向到名为output.log的日志文件中。

  • 2>&1将标准错误也重定向到标准输出,这样错误信息也会被写入到output.log中。

  • 最后的&符号用于将进程放到后台运行。

这样,你的Python项目就会在后台运行,并将print输出写入到指定的日志文件中。

3.4 其他部署方式

如果你想部署在Windows服务器下,一个简单的方式就是通过 PyInstaller 来打包部署。它可以将Python代码及其依赖项(包括解释器)打包成单个可执行文件,这样即使服务器没有安装Python环境也可以运行你的应用程序。

下面命令可以将上面的Python脚本打包成一个exe的可执行文件:

pyinstaller -F 第三步:提供一个从ECS中下载和删除文件的接口.py

文章来源:https://blog.csdn.net/weixin_67276852/article/details/135105562
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。