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']
它工作正常。知道为什么它不起作用吗?
补充说明:
- 它们位于不同的文件中,每个文件的路径都是正确的。
完整追溯:
---------------------------------------------------------------------------
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'
看起来文件根本不存在。
这意味着当文件不存在(或被锁定、访问被拒绝或由于任何其他原因无法打开)时,它将尝试将文件名字符串视为图像数据,从而导致错误你看。
如果您确定该文件存在并且您无法弄清楚为什么它无法打开所以您想看到 img2pdf
在这里吞下的异常,您也可以尝试自己打开该文件并而是将文件描述符传递给 img2pdf
,这也是受支持的。这样,您将能够看到在尝试打开文件时发生的确切异常。
我有一个脚本可以将我的图像转换为 .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']
它工作正常。知道为什么它不起作用吗?
补充说明:
- 它们位于不同的文件中,每个文件的路径都是正确的。
完整追溯:
---------------------------------------------------------------------------
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'
看起来文件根本不存在。
这意味着当文件不存在(或被锁定、访问被拒绝或由于任何其他原因无法打开)时,它将尝试将文件名字符串视为图像数据,从而导致错误你看。
如果您确定该文件存在并且您无法弄清楚为什么它无法打开所以您想看到 img2pdf
在这里吞下的异常,您也可以尝试自己打开该文件并而是将文件描述符传递给 img2pdf
,这也是受支持的。这样,您将能够看到在尝试打开文件时发生的确切异常。