aaa = ['row_163.pkl', 'row_394.pkl', 'row_679.pkl', 'row_202.pkl', 'row_1449.pkl', 'row_247.pkl', 'row_1353.pkl', 'row_749.pkl', 'row_1293.pkl', 'row_1304.pkl', 'row_78.pkl', 'row_532.pkl', 'row_9.pkl', 'row_1435.pkl']
sorted(aaa, key=lambda x: int(os.path.splitext(x.split('_')[1])[0]))
Как и в случае моего требования, у меня есть случай, например row_163.pkl
здесь os.path.splitext('row_163.pkl')
разбит его на ('row_163', '.pkl')
, поэтому нужно разделить его также на '_'.
, нов случае вашего требования вы можете сделать что-то вроде
sorted(aa, key = lambda x: (int(re.sub('\D','',x)),x))
где
aa = ['run01', 'run08', 'run11', 'run12', 'run13', 'run14', 'run18']
, а также для извлечения каталогов вы можете сделать sorted(os.listdir(path))
и для случаявроде 'run01.txt'
или 'run01.csv'
вы можете сделать так
sorted(files, key=lambda x : int(os.path.splitext(x)[0]))