Python 3 img2pdf pdf中错误的图像顺序

时间:2018-03-18 14:55:10

标签: python-3.x

我正在开发一个小程序,它从网站上获取图像并将它们放入pdf中,以便于访问和更简单的查看。 我有一个小问题,因为img2pdf模块似乎以错误的顺序将图像放入pdf中,我真的不明白为什么。

似乎将文件按1,10,11的顺序排列。

import urllib.request
import os
import img2pdf


n = 50
all = 0
for counter in range(1,n+1):
      all = all + 1
      urllib.request.urlretrieve("https://website/images/"+str(all)+".jpg", "img"+str(all)+".jpg")


cwd = os.getcwd()
if all == 50:
      with open("output2.pdf", "wb") as f:
            f.write(img2pdf.convert([i for i in os.listdir(cwd) if i.endswith(".jpg")]))

1 个答案:

答案 0 :(得分:0)

在没有看到您要读取的文件名的情况下,猜测是您的文件名中包含未填充零的数字。依次为 0.jpg 1.jpg ,... 11.jpg 的文件的词典顺序(按字母顺序排序)将导致此顺序: 0.jpg 1.jpg 10.jpg 11.jpg ,< em> 2.jpg , 3.jpg 4.jpg 5.jpg 6.jpg < / em>, 7.jpg 8.jpg 9.jpg ,因为“ 1” <“ 2”。

要合并文件,使2出现在10之前,则可以将文件名零填充(但要注意,某些软件会将前导零解释为数字的八进制表示形式,而不只是前导零。 )

如果无法处理文件名,则可以按以下方式更改文件获取代码:使用正则表达式从整个文件列表的文件名中提取数字,作为int类型,然后按提取的数字对文件名列表进行排序(将以int的形式排序,其中2 <10)。