我使用 glob.glob 从目录中读取一些文件,这些文件的命名如下:1.bmp
文件/名称继续采用以下命名模式:1.bmp, 2.bmp, 3.bmp ...
等等
这是我目前拥有的代码,但是虽然从技术上讲这确实排序,但它并不符合预期。files= sorted(glob.glob('../../Documents/ImageAnalysis.nosync/sliceImage/*.bmp'))
该方法排序如下:
../../Documents/ImageAnalysis.nosync/sliceImage/84.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/85.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/86.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/87.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/88.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/89.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/9.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/90.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/91.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/92.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/93.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/94.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/95.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/96.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/97.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/98.bmp
../../Documents/ImageAnalysis.nosync/sliceImage/99.bmp
在上面的代码中,我确实强调了这个问题,它能够很好地对文件名进行排序,例如90-99.bmp
完全没问题,但是之间89.bmp
and 90.bmp
有文件9.bmp
这显然不应该在那里,应该在开始附近
我期望的输出是这样的:
1.bmp
2.bmp
3.bmp
4.bmp
5.bmp
6.bmp
...
10.bmp
11.bmp
12.bmp
13.bmp
...
依此类推,直到文件末尾
这可以用 glob 来做吗?
这是因为文件是根据名称(字符串)排序的,并且按字典顺序排序。查看[Python.Docs]:排序方法 https://docs.python.org/howto/sorting.html#sorting-how-to了解更多排序相关详细信息。
为了让事情按照你的预期工作,“错误”文件9.bmp应命名为:
在不预先知道文件总数的情况下,像这样命名文件可能会很棘手。
无论如何,还有一个替代方案(前提是all文件的名称遵循命名模式),通过转换文件的基本名称(不带扩展名 - 检查[Python.Docs]:os.path - 常见路径名操作 https://docs.python.org/library/os.path.html) to an int,并基于此进行排序(通过提供key to [Python.Docs]:排序(可迭代,*,key=None,reverse=False) https://docs.python.org/library/functions.html#sorted):
files = sorted(glob.glob("../../Documents/ImageAnalysis.nosync/sliceImage/*.bmp"),
key=lambda arg: int(os.path.splitext(os.path.basename(arg))[0]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)