使用进度指示器在python中创建大文件

问题描述 投票:0回答:1

我需要创建一些大文件并在python中显示写入进度。目前我正在使用此代码来创建文件。但我无法表明进展。 Python Write函数返回在write操作结束时实际写入的数字。但我需要知道每秒写入多少字节。

oneGB = 1024*1024*1024 # 1GB
with open('large_file', 'wb') as fout:
    bytes_number = fout.write(os.urandom(oneGB))
    print(bytes_number)

我知道我可以在linux中使用dd命令与progress获得预期的结果,不幸的是我正在使用的系统不支持progress作为dd命令的状态标志。我试着运行dd命令时得到这个。

dd: invalid status flag: `progress'

这是我的dd命令:

dd if=/dev/zero of=temp_file status=progress count=1M bs=5120
python linux writefile dd
1个回答
0
投票

当然,这项工作的最佳工具是pv。如果您没有全局安装它的权限,您仍然可以只在您的用户目录中从源(没有sudo)构建和安装它,因为它是使用autoconf / automake安装的,所以你只需要在制作和安装之前用./configure运行--prefix=$HOME/bin

但是,如果您真的想编写Python脚本,则需要考虑两个部分:进度条本身和进度条的数据。

对于进度条本身,@ Mntfr已经提到了覆盖它的a question

对于进度条信息,您需要一些方法来跟踪到目前为止已写入的数据量。因此,您需要一次写入较小的数量(例如,在更新进度条之前仅写入5MB),或者您需要异步跟踪输出文件的大小,并相应地更新进度条。第一种方法总体上可能较慢(因为它涉及启动和停止写入),但第二种方法可能更难(因为它需要在脚本中使用异步性,这在Python中实现并不是很有趣,除非您只编写两个脚本并运行他们并排)。这两个想法应该为您提供如何实现您正在寻找的东西的开始。

© www.soinside.com 2019 - 2024. All rights reserved.