子进程gunzip引发解压缩失败

时间:2018-10-03 19:38:38

标签: python

我正在尝试使用子流程进行压缩,但它会返回错误-

  

('解压缩失败%s','gzip:/ tmp / tmp9OtVdr是目录-已忽略\ n')

怎么了?

import subprocess
transform_script_process = subprocess.Popen(
                            ['gunzip', f_temp.name, '-kf', temp_dir],
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)(transform_script_stdoutdata, transform_script_stderrdata
                     ) = transform_script_process.communicate()
self.log.info("Transform script stdout %s",
                                  transform_script_stdoutdata)
if transform_script_process.returncode > 0:
shutil.rmtree(temp_dir)
raise AirflowException("Decompression failed %s",
                                               transform_script_stderrdata)

1 个答案:

答案 0 :(得分:0)

您正在调用gunzip进程,并将以下参数传递给该进程:

  • f_temp.name
  • -kf
  • temp_dir

我假设f_temp.name是您尝试解压缩的gzip压缩文件的路径。 -kf将强制解压缩,并指示gzip解压缩后保留文件。

现在是有趣的部分。 temp_dir似乎是一个变量,其中包含要将文件提取到的目标目录。但是,gunzip不支持此功能。请查看gzip手册。它指出必须传递文件列表以进行解压缩。没有指定目标目录的选项。

有关指定超级用户要提取到的文件夹的更多信息,请参见超级用户的这篇文章:https://superuser.com/questions/139419/how-do-i-gunzip-to-a-different-destination-directory