我正在开发一个小程序,它从网站上获取图像并将它们放入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")]))
答案 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)。