PyPDF2 - 字节数据与二进制数据 - TypeError
PyPDF2 - Byte Data vs Binary Data - TypeError
我正在尝试将 PDF 的一页打印到新的 PDF 文档中。我正在使用以下代码:
from PyPDF2 import PdfFileReader, PdfFileWriter
file_path = "/file_path/.pdf"
input_pdf = PdfFileReader(file_path)
output_file = PdfFileWriter()
cover_page = input_pdf.getPage(0)
output_file.addPage(cover_page)
with open("portion.pdf", "wb") as output_file:
output_file.write(output_file)
当我 运行 此代码时,出现以下错误:
Traceback (most recent call last):
File ".../Extract a portion of PDF.py", line 18, in <module>
output_file.write(output_file)
TypeError: a bytes-like object is required, not '_io.BufferedWriter'
我已经指定输出需要写二进制,为什么说我必须使用类字节对象?
干杯,
在 with
语句中,您将打开的文件命名为 output_file
。这实质上将 output_file
从 PdfFileWriter()
重新分配给您刚刚打开的文件流。当您尝试执行 output_file.write(output_file)
时,这基本上是在尝试将文件流对象本身写入文件流,这没有任何意义并导致 TypeError
.
要解决此问题,只需重命名您在 with
语句中使用的变量:
with open("portion.pdf", "wb") as output_file_stream:
output_file.write(output_file_stream)
或者,您也可以将 PdfFileWriter()
重命名为 output_pdf
而不是 output_file
并将 with 语句更改为类似以下内容:
with open("portion.pdf", "wb") as output_file:
output_pdf.write(output_file)
这可能更有意义。
我正在尝试将 PDF 的一页打印到新的 PDF 文档中。我正在使用以下代码:
from PyPDF2 import PdfFileReader, PdfFileWriter
file_path = "/file_path/.pdf"
input_pdf = PdfFileReader(file_path)
output_file = PdfFileWriter()
cover_page = input_pdf.getPage(0)
output_file.addPage(cover_page)
with open("portion.pdf", "wb") as output_file:
output_file.write(output_file)
当我 运行 此代码时,出现以下错误:
Traceback (most recent call last):
File ".../Extract a portion of PDF.py", line 18, in <module>
output_file.write(output_file)
TypeError: a bytes-like object is required, not '_io.BufferedWriter'
我已经指定输出需要写二进制,为什么说我必须使用类字节对象?
干杯,
在 with
语句中,您将打开的文件命名为 output_file
。这实质上将 output_file
从 PdfFileWriter()
重新分配给您刚刚打开的文件流。当您尝试执行 output_file.write(output_file)
时,这基本上是在尝试将文件流对象本身写入文件流,这没有任何意义并导致 TypeError
.
要解决此问题,只需重命名您在 with
语句中使用的变量:
with open("portion.pdf", "wb") as output_file_stream:
output_file.write(output_file_stream)
或者,您也可以将 PdfFileWriter()
重命名为 output_pdf
而不是 output_file
并将 with 语句更改为类似以下内容:
with open("portion.pdf", "wb") as output_file:
output_pdf.write(output_file)
这可能更有意义。