10
votes

Comment fermer PPYF "PDFFilerReader" Poignée de fichier de classe

Ceci devrait être une question très simple, pour laquelle je n'ai pas pu trouver de réponse par Google Recherche: Comment fermer la poignée de fichier ouverte par PYPDF "PDFFilerReader" Classe

Voici l'extrait: P>

import os.path
from pyPdf import PdfFileReader

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

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


7 commentaires

Exécutez-vous des fenêtres et est-ce que my_renamed.pdf existe avant de renommer?


Oui, j'ai oublié de mentionner que je gère Windows 7 32 32 bit et utilisez Python 2.5. Fichier 'my_renamed.pdf' n'existe pas


@romor 32 signifie que vous ne pouvez pas accéder au fichier car il est utilisé. Essayez de fermer FNAME manuellement (après la lecture), puis renommez.


Oui, c'est ma question - comment fermer le fichier :)


fd = fichier (fname, 'rb'); entrée = pdffilereader (fd); "Lisez-le ici"; fd.close (); os.rename (...)


Excellent. Merci beaucoup. C'est ce que je cherchais, aussi lame que je paraisse: D


@Romor: Bonjour, votre question a-t-elle répondu? Si oui, pourriez-vous fermer votre question?


4 Réponses :



4
votes

Si vous êtes vraiment avoir à l'accès à partir de l'objet PDFFilerAreader (c'est-à-dire: si vous n'avez pas de référence à l'objet de fichier vous-même), vous pouvez utiliser lecteur.stream. Fermer ()

Notez que le PDFFilerReader aura besoin d'un objet de fichier ouvert pour accéder au contenu du PDF (il ne tire pas tout en mémoire à partir du début), alors fermez uniquement le fichier lorsque vous avez terminé avec le lecteur.


0 commentaires

1
votes

Je suggérerais de gérer le fichier OUVERT OUVERT DE LA PDFFILEREADER

Votre code sera le suivant: P>

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 commentaires

0
votes

à la place à l'aide de entrée = pdffilereader (fichier (fname, "rb")) code> Créez un flux d'entrée comme celui-ci

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


0 commentaires