img2pdf 不将 png 转换为字节

img2pdf not converting png to bytes

我有一个脚本可以将我的图像转换为 .pdf 格式,并为它们指定各自的文章名称和作者。我有两个不同作者的两个单独的文件,该脚本对两者之一工作正常,当它不起作用时我收到以下错误:

TypeError: a bytes-like object is required, not 'str'

我使用的代码:

img2pdf.convert(car_test['images_path'][0])

这有以下文件:

['/Users/dollar/Car_Files-copy/3A31735061848903-0001.png',
 '/Users/dollar/Car_Files-copy/3A31735061848903-0002.png',
 '/Users/dollar/Car_Files-copy/3A31735061848903-0003.png']

但是,当我在另一组文件上使用相同的代码时:

['/Users/dollar/Jeff_Files-copy-2/3A31735062223130-0001.png',
 '/Users/dollar/Jeff_Files-copy-2/3A31735062223130-0002.png']

它工作正常。知道为什么它不起作用吗?

补充说明:

  1. 它们位于不同的文件中,每个文件的路径都是正确的。

完整追溯:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/dr/9wh_z8y10fl79chj86pq7knc0000gn/T/ipykernel_828/3317035330.py in <module>
      1 for k, j in zip(car_test['path_to_pdf'],car_test['images_path']):
      2     with open(k, "wb") as f:
----> 3         f.write(img2pdf.convert(j))

~/opt/anaconda3/lib/python3.8/site-packages/img2pdf.py in convert(*images, **kwargs)
   2261             rotation,
   2262             iccp,
-> 2263         ) in read_images(
   2264             rawdata,
   2265             kwargs["colorspace"],

~/opt/anaconda3/lib/python3.8/site-packages/img2pdf.py in read_images(rawdata, colorspace, first_frame_only, rot)
   1442 
   1443 def read_images(rawdata, colorspace, first_frame_only=False, rot=None):
-> 1444     im = BytesIO(rawdata)
   1445     im.seek(0)
   1446     imgdata = None

TypeError: a bytes-like object is required, not 'str'

看起来文件根本不存在。

If trying to open a file with that name fails for whatever reason, img2pdf instead assumes the given variable is not a filename but raw image data (as bytes).

这意味着当文件不存在(或被锁定、访问被拒绝或由于任何其他原因无法打开)时,它将尝试将文件名字符串视为图像数据,从而导致错误你看。

如果您确定该文件存在并且您无法弄清楚为什么它无法打开所以您想看到 img2pdf 在这里吞下的异常,您也可以尝试自己打开该文件并而是将文件描述符传递给 img2pdf,这也是受支持的。这样,您将能够看到在尝试打开文件时发生的确切异常。