我正在工作的一个小程序,从一个网站的图像,并将他们放在一个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")]))发布于 2018-10-08 16:21:26
没有看到你想要读的文件名,一个猜测是你的文件名包含不是零填充的数字。名为0.jpg、1.jpg、. 11.jpg的文件序列的字典顺序(按字母顺序排序)将导致这种排序: 0.jpg、1.jpg、10.jpg、11.jpg、2.jpg、3.jpg、4.jpg、5.jpg、6.jpg、7.jpg、8.jpg、9.jpg,因为"1“< "2”。
要将文件组合到10之前的2,可以对文件名进行零填充(但也要注意,有些软件会将前导零解释为数字八进制表示的指示符,而不仅仅是前导零。)
如果无法操作文件名,那么可以按照以下方式更改文件获取代码:使用正则表达式从整个文件列表的文件名中提取数字,如int类型,然后根据提取的数字对文件名列表进行排序(将排序为int,其中2< 10)。
https://stackoverflow.com/questions/49349302
复制相似问题