一个在命令行中运行、以视觉效果为主的"文件传输"演示脚本。它会:
- 清屏并显示大型英文 ASCII LOGO
- 扫描/生成演示文件列表并显示总览面板
- 以炫酷进度条与阶段性文案模拟传输过程
- 最终展示"传输成功"的结果面板
该脚本为纯视觉模拟,不进行真实的网络传输。非常适合比赛展示、Demo 演示或终端酷炫效果秀。
- 炫酷启动动画与大型 LOGO
rich生态的稳定进度条:Spinner/Bar/DownloadColumn/TimeRemaining- 分阶段状态文案:握手、参数协商、流式传输、负载发送、缓冲刷新、最终确认
- 自动生成演示数据到
demo_data/,无需手动准备 - 完整的传输总览与结果面板
- 操作系统:Windows(CMD/PowerShell),macOS,Linux
- Python:建议
3.8+ - 依赖库:
rich
安装依赖:
pip install rich
- 克隆或下载本项目到本地
- 在项目根目录运行:
python transfer.py
首次运行会自动在 demo_data/ 目录生成 6 个二进制样本文件(随机大小)。
启动时的 LOGO:
███████╗██╗██╗ ███████╗ ████████╗██████╗ █████╗ ███╗ ██╗
██╔════╝██║██║ ██╔════╝ ╚══██╔══╝██╔══██╗██╔══██╗████╗ ██║
█████╗ ██║██║ █████╗ ██║ ██████╔╝███████║██╔██╗ ██║
██╔══╝ ██║██║ ██╔══╝ ██║ ██╔══██╗██╔══██║██║╚██╗██║
██║ ██║███████╗███████╗ ██║ ██║ ██║██║ ██║██║ ╚████║
╚═╝ ╚═╝╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝
随后会显示"传输总览"面板、文件数量与总大小,以及一个含有旋转指示器、进度条、百分比和剩余时间的传输进度列。进度描述会在不同阶段自动切换,传输完成后会显示绿色的"成功结果"面板。
-
启动动画(
startup())
清屏并打印大型 LOGO 与初始化提示。入口参考transfer.py:32-48。 -
演示文件生成(
prepare_files())
若demo_data/不存在则创建,并随机写入 6 个样本文件(80–200 KB)。返回文件列表与总大小。入口参考transfer.py:53-68。 -
传输模拟(
simulate())
使用rich.Progress组合列展示:SpinnerColumn、BarColumn、DownloadColumn、百分比与剩余时间。通过随机"分块"推进总进度,并根据百分比动态切换阶段文案。入口参考transfer.py:73-154。 -
主程序入口
顺序执行:startup()→prepare_files()→simulate()。入口参考transfer.py:160-163。
.
├── transfer.py # 主脚本
├── README.md # 使用说明(本文档)
└── demo_data/ # 首次运行后自动生成的演示数据目录
demo_data/会在第一次运行时自动创建与填充。后续运行会直接读取其中的文件。
-
"ModuleNotFoundError: No module named 'rich'"
说明未安装依赖,执行:pip install rich -
Windows CMD 中字符或边框显示异常
建议使用 PowerShell/Windows Terminal,或在 CMD 中执行:chcp 65001以切换到 UTF-8 编码,并使用等宽字体(如 Cascadia Mono)。 -
想更换演示数据目录
目前为纯视觉演示,未提供命令行参数。可直接修改transfer.py里主入口处的调用:
将prepare_files()改为prepare_files("你的目录")即可(参考transfer.py:162)。
- 本脚本仅进行"视觉层面的传输模拟",不会将数据写出到网络。
- 适用于公开演示与学习使用;如需真实传输功能,请在此基础上自行扩展并加入必要的安全与合规措施。
- Rich — Python 终端美化与富文本库