如何在不将文件保存到磁盘的情况下测量文件的大小?

时间:2013-07-30 12:42:37

标签: python postgresql

我正在制作一个postgres基础的转储文件。 通过使用pg_dump base > base.sql,postgres创建base.sql,但在进程未完成之前,文件显示为0字节。 有没有办法获取文件的大小来制作一种进度条?

我用os.stat()尝试了python,但它也显示了0个字节:

>>> import os
>>> file = os.stat('base.sql')
>>> file.st_size
>>> 0L

2 个答案:

答案 0 :(得分:5)

一个非python选项是使用Universe存储库中提供的pv命令行程序(man page):

apt-get install pv

现在,您可以通过pv来管理到目前为止已经将多少数据写入输出文件的持续更新:

pg_dump base | pv > base.sql

当然,在这种情况下,pv无法知道最终大小,因此它只会显示到目前为止传输的数据量。如果你有一个估计,你可以提供-s参数,你将获得一个正确的进度条:

pg_dump base | pv -s 500M > base.sql

Here是我发现的一篇博文,其中包含安装说明,示例和屏幕截图。

答案 1 :(得分:0)

我不认为你可以,直到所有文件都写入硬盘。

要创建进度条,您必须知道文件在100%占用的空间是多少。只有这样,通过使用该数字和您正在编写的文件使用的当前空间,您才能计算当前写入文件的百分比。