How to close pyPDF “PdfFileReader” Class file handle

前端 未结 4 988
青春惊慌失措
青春惊慌失措 2021-01-12 01:12

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 sni

相关标签:
4条回答
  • 2021-01-12 01:54

    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.

    0 讨论(0)
  • 2021-01-12 01:55

    I would sugest to handle the file open out of the PdfFileReader

    Your code will be:

    import os.path
    from pyPdf import PdfFileReader
    
    fname = 'my.pdf'
    fh = file(fname, "rb")
    input = PdfFileReader(fh)
    
    fh.close()
    os.rename(fname, 'my_renamed.pdf')
    
    0 讨论(0)
  • 2021-01-12 02:00

    instead using input=PdfFileReader(file(fname, "rb")) create an input stream like this

    inputStream=file(fname, "rb")
        input=PdfFileReader(inputStream)
    

    and when job is done use inputStream.close() then u will be able to call it through os package

    0 讨论(0)
  • 2021-01-12 02:01

    If you really have to access this from the PdfFileReader object (that is: if you haven't got a reference to the file object yourself), you can use reader.stream.close()

    Note that the PdfFileReader will need an open file object to access the pdf's content (it doesn't pull everything into memory from the start), so only close the file when you are done with the reader.

    0 讨论(0)
提交回复
热议问题