Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to close pyPDF "PdfFileReader" Class file handle

Tags:

python

pypdf

this should be very simple question, for which I couldn't find answer by Google search: How to close file handle opened by pyPDF "PdfFileReader" Class

Here is snippet:

import os.path
from pyPdf import PdfFileReader

fname = 'my.pdf'
input = PdfFileReader(file(fname, "rb"))

os.rename(fname, 'my_renamed.pdf')

which raises error [32]

Thanks

like image 568
romor Avatar asked Dec 12 '10 15:12

romor


1 Answers

The operating system is preventing a file from being re-named while something else has it open. This is a Good Thing (tm).

Python's with statement will automatically close the file after you're done reading/manipulating it.

with open(fname, "rb") as f:
  input = PdfFileReader(f, "rb"))

os.rename(fname, 'my_renamed.pdf')

If you're still on Python 2.5, you'll have to do a special import:

from __future__ import with_statement

Python 2.6 and above have with enabled by default.

like image 173
fitzgeraldsteele Avatar answered Sep 21 '22 00:09

fitzgeraldsteele