2016-11-10 1 views
0

서브 프로세스를 사용하여 파이썬에서 gz 파일을 압축 해제하는 방법을 모른다.subprocess를 사용하여 파이썬에서 gz 파일의 압축을 해제하는 방법

gzip 라이브러리가 너무 느리고 gnu/linux 쉘 코드와 서브 프로세스 라이브러리를 사용하여 위와 동일한 기능을 수행하려고합니다.

def __unzipGz(filePath): 
    import gzip 

    inputFile = gzip.GzipFile(filePath, 'rb') 
    stream  = inputFile.read() 
    inputFile.close() 

    outputFile = file(os.path.splitext(filePath)[0], 'wb') 
    outputFile.write(stream) 
    outputFile.close() 

답변

1

당신이 같은 것을 사용할 수 있습니다

import subprocess 

filename = "some.gunzip.file.tar.gz" 
output = subprocess.Popen(['tar', '-xzf', filename]) 

을 유용한 출력 여기에 더 많은 없기 때문에, 당신은 또한이 같은 os.system 대신 subprocess.Popen 사용할 수 있습니다

import os 

filename = "some.gunzip.file.tar.gz" 
exit_code = os.system("tar -xzf {}".format(filename)) 
+0

감사합니다! 파일은 gz 파일이므로 .zip을 사용하여 .gz 파일을 추출하려고합니다. 이 함수는 하나의 파일을 압축 해제 할뿐만 아니라 실행을 끝내기 위해 명령을 기다려야합니까? – eifersucht

+0

'zcat '을 사용하지 않았으므로 어떻게 동작하는지 알 수 없습니다. 'tar '의 경우 모든 파일을 추출한 다음 종료합니다 (추출 프로세스가 완료 될 때까지 프로그램을 차단합니다). – Fejs

+0

고마워, 마침내 나는 os.system과 gunzip 함수를 사용하여 해결했다. – eifersucht

관련 문제