1

を使用して .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
4

2 に答える 2

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 を閉じません。

于 2013-11-13T17:06:21.207 に答える
1

fileobj=sys.stdoutモード文字列でパイプ記号 (ストリーミング モードを示す) を使用します。

これは次のようになりtar czf - .ます。

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

これは Linux でテストされています。Windowsでは失敗すると思います。その問題の解決策については、この質問を参照してください。

参考文献:

于 2013-11-13T17:04:47.493 に答える