diff --git a/pydub/audio_segment.py b/pydub/audio_segment.py index ce141aa..3b9e288 100644 --- a/pydub/audio_segment.py +++ b/pydub/audio_segment.py @@ -966,19 +966,20 @@ def export(self, out_f=None, format='mp3', codec=None, bitrate=None, parameters= log_subprocess_output(p_out) log_subprocess_output(p_err) - if p.returncode != 0: - raise CouldntEncodeError( - "Encoding failed. ffmpeg/avlib returned error code: {0}\n\nCommand:{1}\n\nOutput from ffmpeg/avlib:\n\n{2}".format( - p.returncode, conversion_command, p_err.decode(errors='ignore') )) - - output.seek(0) - out_f.write(output.read()) + try: + if p.returncode != 0: + raise CouldntEncodeError( + "Encoding failed. ffmpeg/avlib returned error code: {0}\n\nCommand:{1}\n\nOutput from ffmpeg/avlib:\n\n{2}".format( + p.returncode, conversion_command, p_err.decode(errors='ignore') )) - data.close() - output.close() + output.seek(0) + out_f.write(output.read()) - os.unlink(data.name) - os.unlink(output.name) + finally: + data.close() + output.close() + os.unlink(data.name) + os.unlink(output.name) out_f.seek(0) return out_f