python - 有没有办法在导入的文件进入循环之前对其进行排序?
问题描述
我正在尝试将文件夹中的所有 .job 文件转换为单个 pdf。这段代码可以做到这一点,但是它们没有特定的顺序。我希望它们按照文件创建时间的顺序导入,或者它们的文件名遵循设置模式“XXX_1.jpg”
这是我到目前为止所拥有的:
import img2pdf
os.chdir('C:/Path')
# convert all files ending in .jpg inside a directory
with open("output.pdf", "wb") as f:
f.write(img2pdf.convert([i for i in os.listdir('.') if i.endswith(".jpg")]))
解决方案
首先,您可以使用glob
将目录中的所有路径收集files
到一个列表中。然后使用os
module getctime
,您可以获得创建时间的列表。我压缩了两个列表,然后制作了一个字典,其键是文件路径和值 - 创建时间。最后,我使用运算符模块按值排列字典,以按值的降序排列所有字典(即最新文件优先)
import os
import glob
import operator
import img2pdf
a= glob.glob("my_directory/*.jpg")
b = [os.path.getctime(i) for i in a]
c = {}
for i,j in list(zip(a,b)):
c[i] = j
sorted_c = dict(sorted(c.items(), key=operator.itemgetter(1),reverse=True))
with open("output.pdf", "wb") as f:
f.write(img2pdf.convert([k for k in sorted_c]))
推荐阅读
- list - Prolog:集合和操作
- python - 关于自动化无聊的东西的问题:第 5 章
- typescript - 如何将 Typescript 类型定义为字符串字典但具有一个数字“id”属性
- windows - Adobe connect 卡在连接上
- android-studio - android studio 中的 Flutter 智能代码生成快捷方式
- python - 在数组 PyMongo 中查找子文档
- javascript - 使用 onClick 事件调用 React 组件
- reactjs - 如何使反应表 7 中的列可编辑
- r - 如何从 WMS 传单图层中检索点位置数据?
- python - 异步 walk_blob 抛出“对象 AccessToken 不能在 'await' 表达式中使用”