如何用Python交互式显示网络驱动器文件的读取速度?
如何在Python读取文件时交互式显示读取速度?
要实现读取网络驱动器文件时实时显示速度,核心是分块读取文件、累计读取量并计算单位时间内的读取字节数,以此交互式输出当前速度。以下是具体实现方案:
实现思路
- 分块读取文件(避免一次性加载大文件占用过多内存)
- 记录读取开始时间和累计读取字节数
- 每读取一块就计算并刷新显示当前速度
- 利用
print的end='\r'参数实现同一行刷新输出,避免刷屏
完整代码示例
import time file_path = "path/to/network/drive/file" block_size = 1024 * 1024 # 设为1MB块大小,可根据需求调整 total_read = 0 start_time = time.time() with open(file_path, "rb") as f: while chunk := f.read(block_size): total_read += len(chunk) # 若要模拟手动复制到本地,取消下方注释并替换local_path为本地路径 # with open(local_path, "ab") as local_f: # local_f.write(chunk) # 计算并实时刷新显示速度 elapsed_time = time.time() - start_time if elapsed_time > 0: speed_mb = total_read / (1024 * 1024) / elapsed_time print(f"已读取: {total_read / (1024*1024):.2f} MB | 当前速度: {speed_mb:.2f} MB/s", end='\r') # 读取完成后输出最终统计 total_time = time.time() - start_time avg_speed = total_read / (1024 * 1024) / total_time print(f"\n读取完成!总大小: {total_read / (1024*1024):.2f} MB | 总耗时: {total_time:.2f} s | 平均速度: {avg_speed:.2f} MB/s")
关键说明
- 块大小调整:1MB是均衡的选择,太大可能增加内存压力,太小会提升IO频次影响统计准确性
- 对比手动复制:若要和手动复制速度对比,需开启代码中写入本地文件的逻辑,确保操作和手动复制一致
- 速度参考:实时速度反映当前读取状态,平均速度更能体现整体读取性能,两者结合可全面评估网络驱动器读取效率
内容的提问来源于stack exchange,提问作者Darren Christopher
相关产品推荐
相关产品推荐

