2016-09-04 5 views
2

Python 3.4の "シンボリックリンクに従う"機能でtar + gzip圧縮を使うにはどうすればいいですか?問題は次のとおりです。 ":GZ W" モードが、( "間接参照" オプションに Python tarfile:tar + gzip圧縮をシンボリックリンクに従う方法?

  • tarfile.tarfileをサポートしていません) "間接参照" をサポートしていますが、「ワットをサポートしていません:

    • tarfile.openは()をサポートしていGZ 「モード

    コード:

    ... 
    mode = "" 
    if bckentry['method'] == "tar": 
        mode = "w" 
    elif bckentry['method'] == "targz": 
        mode = "w:gz" 
    
    archive = tarfile.TarFile(name=filepath, mode=mode) 
    archive.dereference = True if bckentry['followsym'] == "yes" else False 
    # archive = tarfile.open(filepath, mode=mode) 
    
    if bckentry['withpath'] == 'yes': 
        for entry in bckentry['include_dirs']: 
         archive.add(entry, filter=self.filter_tar) 
    elif bckentry['withpath'] == 'no': 
        for entry in bckentry['include_dirs']: 
         archive.add(entry, arcname=os.path.basename(entry), filter=self.filter_tar) 
    ... 
    
  • 答えて

    2

    tarfile.openは、順番にTarFileコンストラクタを呼び出していること、TarFile.openクラスメソッドのショートカットです。ドキュメントは少し曖昧ですが、最初の2つはdereferenceキーワード引数と他のすべての消費されていないkwargsをTarFileコンストラクタに渡すことは明らかです。それは作品

    archive = tarfile.open(name='foo.tar.gz', mode='w:gz', dereference=True) 
    
    +0

    を:あなただけのキーワード引数として渡す場合

    したがって、あなたは、それらのいずれかとdereferenceを使用することができます!ありがとう、私はドキュメントを読んで、この明白な方法を試してみませんでした。 – Balint

    関連する問題