Skip to main content
 首页 » 编程设计

python之在python中重新排序文件名

2025年05月04日12mate10pro

我有以下问题:

我需要加载多个数据文件。这些文件由我的设备命名,例如:

meas98.dat 
meas99.dat 
meas100.dat 
meas101.dat 

换句话说,没有前导零。因此,如果我通过

获取文件名
os.listdir 

它们是按字母顺序排列的,意思是“meas100.dat”将是第一个。这显然不是我想要达到的。问题是这样做最优雅的方法是什么?

我想到的(不雅的)方式是:

  • 加载文件名
  • 提取文件号
  • 排序文件号(获取索引)
  • 使用这些索引对文件名进行排序

我很确定 python 有一些内置的东西可以在加载文件时执行此操作...

请您参考如下方法:

l = ['meas98.dat', 
    'meas99.dat', 
    'meas100.dat', 
    'meas101.dat'] 
l.sort(key=lambda i: int(i.strip('meas.dat'))) 

有一种 pythonic 方法可以通过使用 pathlib 来做到这一点模块:

这是我终端中的文件:

~/so$ ls 
meas100.dat  meas98.dat  meas99.dat 

这是 python 中的文件:

from pathlib import Path 
p = Path('/home/li/so/') 
list(p.iterdir()) 
[PosixPath('/home/li/so/meas99.dat'), 
 PosixPath('/home/li/so/meas98.dat'), 
 PosixPath('/home/li/so/meas100.dat')] 

看起来 pathlib 已经为你做了这件事,你可以试一试。