2016-05-19 7 views
1

私はPythonスクリプトを使ってライブラリを強化し、抽出してビルドするレガシースクリプトを用意しています。文字列に一致するファイル以外のPython tarfile extractall

Windowsでは、ブーストアーカイブ内の一部のファイルでパスが長すぎるため、抽出手順が失敗します。例えば。

IOError: [Errno 2] No such file or directory: 'C:\\<my_path>\\boost_1_57_0\\libs\\geometry\\doc\\html\\geometry\\reference\\spatial_indexes\\boost__geometry__index__rtree\\rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html' 

extractall libにtarファイルを作るが、.html拡張子を持つすべてのファイルを無視し、単純にとにかくありますか?

また、266のウィンドウ制限を超えるパスを許可する方法はありますか?

答えて

1

あなたはタール内のすべてのファイルをループして抽出することができます唯一の「.htmlを」
輸入OS 輸入tarファイルで終わらないもの

def custom_files(members): 
    for tarinfo in members: 
     if os.path.splitext(tarinfo.name)[1] != ".html": 
      yield tarinfo 

tar = tarfile.open("sample.tar.gz") 
tar.extractall(members=custom_files(tar)) 
tar.close() 

モジュールに関するコード例と情報ファイル名のサイズに制限を克服に来

hereを発見された、マイクロソフトのドキュメントを参照してください](https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

+0

は、NICを探していましたリストを作成するためにすべてをループするのではなく、これを繰り返し実行しますが、これは明らかにうまくいきました。ありがとう – bgura

関連する問題