2016-07-08 12 views
1

私は2つのtar.gzファイル2014_SRS.tar.gzと2013_SRS.tar.gzを持っています。各ファイルにはSRSという名前のフォルダがあり、テキストファイルがいっぱいです。私はftpサーバからこれらをダウンロードしました。 Pythonで自動的に解凍したいと思っています。これは私のコードです:なぜ両方のtar.gzファイルを展開しないのですか?

import re 
import ftplib 
import os 
import time 
import tarfile 
import sys 

print('1') 

tar = tarfile.open('2014_SRS.tar.gz') 
tar.extractall() 
tar.close() 

print('2') 

tar = tarfile.open('2013_SRS.tar.gz') 
tar.extractall() 
tar.close() 

print('3') 

このコードは、2番目のファイルのみを開きます。どのようにして両方のファイルを開くように修正できますか?

また、forループを使用してディレクトリ全体を実行しようとしました。コードを以下に示します。

for i in os.listdir(os.getcwd()): 
    if i.endswith(".tar.gz"): 
     tar = tarfile.open(i, "r:gz") 
     tar.extractall() 
     tar.close() 

しかし、これは私にEOFErrorを与えました。さらに、少しのコードを実行する前に、両方のファイルを手動で解凍することができました。しかし、私はそれを実行した後、コードが私にエラーを与える後、私はもう手動で2014_SRSファイルを解凍することはできません。これをどうやって解決するのですか?

+1

ファイルの内容は同じですか?もしそうなら、私は最初のファイルの抽出結果を上書きする2番目のファイルを抽出すると思います。しかし、ファイルについてもっと知ることなく、誰でもあなたを助けることはほぼ確実に不可能です。 – Blckknght

+0

各ファイルを別のディレクトリに配置します。コードを繰り返して、出力ファイルを比較してください。 –

+0

@Blckknghtファイルの内容は同じ名前です。しかし、どのように注文しても(つまり、2014_SRSまたは2013_SRSから抽出するかどうかにかかわらず)、2013_SRSのフォルダでのみ終了します –

答えて

0

両方のファイルをコードで解凍できないという特定の質問には答えられないかもしれませんが、以下はtar.gzファイルのリストを解凍する方法の1つです。

import tarfile, glob 

srcDir = "/your/src/directory" 
dstDir = "/your/dst/directory" 

for f in glob.glob(srcDir + "/*.gz"): 

    t = tarfile.open(f,"r:gz") 

    for member in t.getmembers(): 
      t.extract(member,dstDir) 
    t.close() 
+0

パスを説明できますか? –

+0

私は、tar.gzファイルがあるソースディレクトリの絶対パスと、ファイルを展開する場所の絶対パスを指定しました。これらは、たとえば/ Users/xyz/workspaceです。 – Koba

+0

エラーが発生しますか?あなたはもっと具体的になりますか?ディレクトリにtar gzファイルがあることを確認してください – Koba

関連する問題