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

时间:2019-03-17 04:15:29

标签: python linux writefile dd

我需要创建一些大文件并在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 comand与progress来获得预期的结果,不幸的是,我正在使用的系统不支持progress作为{{1 }}命令。我在尝试运行dd命令时得到了这个。

dd

这是我的dd命令:

dd: invalid status flag: `progress'

1 个答案:

答案 0 :(得分:0)

当然,最好的工具是pv。如果您无权全局安装它,您仍然可能只能从源目录(没有sudo)在用户目录中构建和安装它,因为它是使用autoconf / automake安装的,因此您只需要在进行安装之前,请与./configure一起运行--prefix=$HOME/bin

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

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

有关进度条信息,您将需要某种方式来跟踪到目前为止已写入了多少数据。因此,您需要一次写入较小的数量(例如,在更新进度条之前仅写入5MB),或者您将需要异步跟踪输出文件的大小,并相应地更新进度条。第一种方法可能总体上较慢(因为它涉及开始和停止编写),但是第二种方法可能更难(因为它需要脚本中的异步性,除非您只编写两个脚本并运行,否则在Python中实现该方法不是很有趣。他们并排)。这两个想法应该使您开始实现所需的内容。