如何以数字方式对文件名进行排序

时间:2016-01-27 01:13:25

标签: python list python-2.7 sorting integer

我有这样的文件名:savedrecs(1),savedrecs(2)... savedrecs(11)等,我使用代码:

MyService

这里,(*)代表文件号。但是,当我运行代码时,结果分别对应于编号为1,11,12,13,2,3,4的文件,而不是这个首选顺序:1,2,3,4,(...), 11,12,13。有没有办法可以将*定义为整数,然后以某种方式将其调整为此代码?

3 个答案:

答案 0 :(得分:0)

也许像......

import sys
import os
import glob
directory = ["A", "B", "C", "D", "E"]

files = sorted(glob.glob(folder+'/directory*/savedrec*'))
for i in files:
    print i
    with open(i) as f:
        a=sum(not line.strip() for line in f)
        print a   

答案 1 :(得分:0)

此函数应将数字视为int而不是字符串,并适当地进行排序

fns = ['savedrecs('+str(i)+').txt' for i in range(1,20)]
def key_fn(x):
    return int(re.findall(r"savedrecs\((\d+)\).txt", fns[0])[0])

print sorted(fns, key=key_fn)

因此,在您的代码中,您可以使用以下内容:

for file in sorted(glob.glob(os.path.join(folder, "savedrecs(*).txt")), key = key_fn):

答案 2 :(得分:0)

Garrett R,我想你的意思是:

def key_fn(x):
    return int(re.findall(r"savedrecs\((\d+)\).txt", x)[0])