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

mar*_*jke 1 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
Run Code Online (Sandbox Code Playgroud)

Lau*_*low 5

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

apt-get install pv
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过管道pv直接获取有关已将数据写入输出文件的持续更新:

pg_dump base | pv > base.sql
Run Code Online (Sandbox Code Playgroud)

当然,pv在这种情况下无法知道最终大小,所以它只显示到目前为止管道传输的数据量.如果你有一个猜测,你可以提供一个-s参数,你会得到一个适当的进度条:

pg_dump base | pv -s 500M > base.sql
Run Code Online (Sandbox Code Playgroud)

是我在安装说明,示例和屏幕截图中找到的博客文章.