【发布时间】:2021-07-15 13:52:54
【问题描述】:
在做
glob.glob('/var/log/apache2/other_vhosts_access.log*')
给出一个未排序的列表,例如['....76.gz', '....16.gz', '....46.gz', ...]。还有,
sorted(glob.glob('/var/log/apache2/other_vhosts_access.log*'))
给予
other_vhosts_access.log
other_vhosts_access.log.1
other_vhosts_access.log.10.gz
other_vhosts_access.log.11.gz
other_vhosts_access.log.12.gz
...
other_vhosts_access.log.19.gz
other_vhosts_access.log.2.gz
如何进行更好的排序? .log, .log.1, .log.2.gz, ..., .log.9.gz, .log.10.gz, ...
【问题讨论】:
-
您可以创建自己的排序键函数并将其传递给sorted,排序键可以提取数字,并将其作为int返回。
-
@RufusVS 是的,
sorted(..., key=...),但我更多的是寻找一个不针对每种情况进行编码的通用解决方案。
标签: python sorting glob natural-sort