如何解压缩.gz文件并将解压缩后的文件保存到Python中的其他目录?
我有一个70GB的.gz文件,我正试图解压并保存到另一个目录,到目前为止没有成功 以下是我尝试过的一些事情:如何解压缩.gz文件并将解压缩后的文件保存到Python中的其他目录?,python,subprocess,gzip,Python,Subprocess,Gzip,我有一个70GB的.gz文件,我正试图解压并保存到另一个目录,到目前为止没有成功 以下是我尝试过的一些事情: import gzip f = gzip.open('/directory1/file.txt.gz', 'rb') decompressed_file = gzip.GzipFile(fileobj=f) with open('/directory2/file.txt', 'wb') as s: s.write(decompressed_file.read()) s.clos
import gzip
f = gzip.open('/directory1/file.txt.gz', 'rb')
decompressed_file = gzip.GzipFile(fileobj=f)
with open('/directory2/file.txt', 'wb') as s:
s.write(decompressed_file.read())
s.close
当我运行上述命令时,会创建“/directory2/file.txt”,但该文件为空,并且终端会终止进程
import subprocess
subprocess.run(['zcat', '/directory1/file.txt.gz', '>', '/directory2/file.txt'])
这个zcat命令在终端中执行时运行得非常好,但在Python中运行时,我正在解压缩的文件的全部内容都会打印到控制台。这显然大大减慢了减压速度。我正在运行这些命令的远程服务器有一个时间限制,它将在进程完成之前结束进程
subprocess.run(['zcat', '/directory1/file.txt.gz', '>', '/directory2/file.txt'], stdout = subprocess.PIPE)
当我运行上述操作时,我得到以下错误:
File "/usr/lib64/python3.6/subprocess.py", line 425, in run
stdout, stderr = process.communicate(input, timeout=timeout)
File "/usr/lib64/python3.6/subprocess.py", line 850, in communicate
stdout = self.stdout.read()
OSError: [Errno 14] Bad address
我做错了什么,或者完成我试图做的事情的正确方式是什么?解压一个.gz文件并将其保存到另一个目录的感觉应该很简单,但到目前为止,我运气不好。由于您试图将整个存档加载到内存中,所以该过程似乎会终止。观察内存使用情况以确认这一点 因为构造类似于文件的对象,所以可能需要运行它。让我们为它创建函数:
导入gzip
进口舒蒂尔
缓冲区大小=200*1024*1024#200 mb,任意
def gunzip(源、目标、缓冲区大小=缓冲区大小):
使用gzip.open(source)作为s:
打开(目的地“wb”)作为d:
shutil.copyfileobj(s、d、缓冲区大小)
并使用它:
gunzip(“/directory1/file.txt.gz”,“/directory2/file.txt”)
您可以尝试几项更改: