winziprint: delete temp files in finally block
This commit is contained in:
@ -19,29 +19,34 @@ def convert(input_file_names: list[str], output_file_name: str, encoding: str =
|
|||||||
page_nums = []
|
page_nums = []
|
||||||
tmp_file_names = []
|
tmp_file_names = []
|
||||||
|
|
||||||
for i in range(0, len(input_file_names), BATCH_SIZE):
|
try:
|
||||||
batch = input_file_names[i:i + BATCH_SIZE]
|
for i in range(0, len(input_file_names), BATCH_SIZE):
|
||||||
documents = []
|
batch = input_file_names[i:i + BATCH_SIZE]
|
||||||
for file_name in batch:
|
documents = []
|
||||||
html = weasyprint.HTML(file_name, encoding=encoding)
|
for file_name in batch:
|
||||||
doc = html.render()
|
html = weasyprint.HTML(file_name, encoding=encoding)
|
||||||
documents.append(doc)
|
doc = html.render()
|
||||||
del html
|
documents.append(doc)
|
||||||
all_pages = [p for doc in documents for p in doc.pages]
|
del html
|
||||||
tmp_file_name = f'{output_file_name}.part.{i:0000}'
|
all_pages = [p for doc in documents for p in doc.pages]
|
||||||
documents[0].copy(all_pages).write_pdf(tmp_file_name)
|
tmp_file_name = f'{output_file_name}.part.{i:0000}'
|
||||||
tmp_file_names.append(tmp_file_name)
|
documents[0].copy(all_pages).write_pdf(tmp_file_name)
|
||||||
page_nums += [len(doc.pages) for doc in documents]
|
tmp_file_names.append(tmp_file_name)
|
||||||
del documents
|
page_nums += [len(doc.pages) for doc in documents]
|
||||||
del all_pages
|
del documents
|
||||||
gc.collect()
|
del all_pages
|
||||||
|
gc.collect()
|
||||||
|
|
||||||
merger = pypdf.PdfWriter()
|
merger = pypdf.PdfWriter()
|
||||||
for pdf in tmp_file_names:
|
for pdf in tmp_file_names:
|
||||||
merger.append(pdf)
|
merger.append(pdf)
|
||||||
os.remove(pdf)
|
merger.write(output_file_name)
|
||||||
merger.write(output_file_name)
|
merger.close()
|
||||||
merger.close()
|
del merger
|
||||||
|
finally:
|
||||||
|
for pdf in tmp_file_names:
|
||||||
|
if os.path.isfile(pdf):
|
||||||
|
os.remove(pdf)
|
||||||
|
|
||||||
return page_nums
|
return page_nums
|
||||||
|
|
||||||
@ -59,6 +64,8 @@ def _wrapper_convert(args: list[str], encoding: str = None) -> None:
|
|||||||
msg = str(e).replace('\n', ' ')
|
msg = str(e).replace('\n', ' ')
|
||||||
print(f'error: {msg}', flush=True)
|
print(f'error: {msg}', flush=True)
|
||||||
traceback.print_exception(e)
|
traceback.print_exception(e)
|
||||||
|
finally:
|
||||||
|
gc.collect()
|
||||||
|
|
||||||
|
|
||||||
def usage() -> None:
|
def usage() -> None:
|
||||||
|
Reference in New Issue
Block a user