我正在尝试使用子流程进行压缩,但它会返回错误-
('解压缩失败%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)
答案 0 :(得分:0)
您正在调用gunzip
进程,并将以下参数传递给该进程:
f_temp.name
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