繁体   English   中英

如何关闭pyPDF“PdfFileReader”类文件句柄

[英]How to close pyPDF “PdfFileReader” Class file handle

这应该是一个非常简单的问题,我无法通过 Google 搜索找到答案:How to close file handle opens by pyPDF "PdfFileReader" Class

这是片段:

import os.path
from pyPdf import PdfFileReader

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

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

这引发了错误 [32]

谢谢

操作系统阻止文件在其他文件打开时被重命名。 这是一件好事(tm)。

Python 的with语句将在您完成阅读/操作后自动关闭文件。

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

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

如果您仍在使用 Python 2.5,则必须进行特殊导入:

from __future__ import with_statement

Python 2.6 及更高版本默认启用。

如果您真的必须从 PdfFileReader 对象访问它(即:如果您自己没有对文件对象的引用),则可以使用reader.stream.close()

请注意, PdfFileReader 将需要一个打开的文件对象来访问 pdf 的内容(它不会从一开始就将所有内容都拉入内存),因此只有在您完成阅读器后才关闭文件。

我会建议处理从 PdfFileReader 打开的文件

您的代码将是:

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')

而是使用input=PdfFileReader(file(fname, "rb"))创建这样的输入流

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

当工作完成后使用inputStream.close()然后你就可以通过 os 包调用它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM