在tarthon中将tar.gz打印到stdout

时间:2013-11-13 16:28:41

标签: python gzip tar

我可以使用

创建.tar.gz文件
with tarfile.open(archive, 'w:gz') as archive_fd:
    add_files_to_tar('.', archive_fd)

这很好用。但有时我想将这些文件打印到stdout(如果我通过SSH执行命令)

有谁知道如何做到这一点?我的旧bash代码是这样的

tar -czf - $files >&1

tar -czf - $files >/filename

2 个答案:

答案 0 :(得分:2)

认为你可以在流模式下打开tar文件并传递给它sys.stdout:

import sys
with tarfile.open(fileobj=sys.stdout, mode='w|gz') as archive_fd:
    add_files_to_tar('.', archive_fd)

tarfile文档说它在完成时不会关闭stdout。

答案 1 :(得分:1)

在模式字符串中使用fileobj=sys.stdout和管道符号(表示流模式)。

这类似于tar czf - .

with tarfile.open(archive, 'w|gz', fileobj=sys.stdout) as archive_fd:
    archive_fd.add('.')

这是在Linux上测试的;我认为它会在Windows上失败。有关该问题的解决方案,请参阅this question

参考文献: