子进程解压缩并删除源文件?
subprocess unzip with source file remove?
我正在使用 python 子进程来解压缩 zip 存档。我的代码如下:
subprocess.Popen(['unzip', '{}.zip'.format(inputFile), '-d', output_directory])
解压缩后是否有解压缩命令删除zip源文件?如果不是,我如何通过管道将 rm
传送到 subprocess.Popen
但要确保它先等待文件解压缩?
谢谢。
您可以在 Shell 中使用 &&
,仅当第一个命令成功时才会执行第二个命令:
import subprocess
import os
values = {'zipFile': '/tmp/simple-grid.zip', 'outDir': '/tmp/foo'}
command = 'unzip {zipFile} -d {outDir} && rm {zipFile}'.format(**values)
proc = subprocess.Popen(command, shell=True)
_ = proc.communicate()
print('Success' if proc.returncode == 0 else 'Error')
或者,os.remove()
如果 unzip
成功:
inputFile = values['zipFile']
output_directory = values['outDir']
proc = subprocess.Popen(
['unzip', '{}'.format(inputFile), '-d', output_directory]
)
_ = proc.communicate() # communicate blocks!
if proc.returncode == 0:
os.remove(values['zipFile'])
print('Success' if not os.path.exists(inputFile) else 'Error')
我正在使用 python 子进程来解压缩 zip 存档。我的代码如下:
subprocess.Popen(['unzip', '{}.zip'.format(inputFile), '-d', output_directory])
解压缩后是否有解压缩命令删除zip源文件?如果不是,我如何通过管道将 rm
传送到 subprocess.Popen
但要确保它先等待文件解压缩?
谢谢。
您可以在 Shell 中使用 &&
,仅当第一个命令成功时才会执行第二个命令:
import subprocess
import os
values = {'zipFile': '/tmp/simple-grid.zip', 'outDir': '/tmp/foo'}
command = 'unzip {zipFile} -d {outDir} && rm {zipFile}'.format(**values)
proc = subprocess.Popen(command, shell=True)
_ = proc.communicate()
print('Success' if proc.returncode == 0 else 'Error')
或者,os.remove()
如果 unzip
成功:
inputFile = values['zipFile']
output_directory = values['outDir']
proc = subprocess.Popen(
['unzip', '{}'.format(inputFile), '-d', output_directory]
)
_ = proc.communicate() # communicate blocks!
if proc.returncode == 0:
os.remove(values['zipFile'])
print('Success' if not os.path.exists(inputFile) else 'Error')