2017-04-03 1 views
1

몇 개의 파일이있는 tarfile 객체가 있는데, 그 중 하나는 ffb.json입니다. 나는 그러나 tar 파일 객체를 문자열로 변환하는 방법

with tarfile.open(mode="r:gz", fileobj=StringIO.StringIO(p.results)) as tar: 
    for tarinfo in tar: 
     print tarinfo.name 
     if tarinfo.name == './ffb.json': 
      print tarinfo.tobuf() 

print tarinfo.tobuf() 내가 기대했던 인쇄되지 않습니다는 그 JSON 문자열을 추출하기 위해 다음과 같은 노력 : ./ffb.json0000644000000000000000000000054313070524150012600 0ustar rootroot00000000000000

를 내가 손으로 ffb.json를 추출하면, 참으로 합법적 인 JSON 문자열을 가지고 그 안에. tar 파일에 대한 documentation에서 언급 한 바와 같이

답변

1

TarInfo는 전용 파일 메타 데이터를 포함 - "그것은 파일의 데이터 자체를 포함하지 않습니다."

다행히 (이후에 .read() 원시 내용을 얻을 수 있습니다) 파일 - 류의 객체로 파일의 내용을 얻기 위해 다시 TarFile.extractfile(member)에 그 TarInfo 개체를 전달할 수 있습니다. 예 : print tar.extractfile(tarinfo).read().

또는 foreach 루프를 건너 뛰고 TarFile.extractfile(member)을 파일 이름과 직접 연결하여 (예 : print tar.extractfile("./ffb.json").read()) 호출 할 수 있습니다.

관련 문제