我有这样的文件名:savedrecs(1),savedrecs(2)... savedrecs(11)等,我使用代码:
MyService
这里,(*)代表文件号。但是,当我运行代码时,结果分别对应于编号为1,11,12,13,2,3,4的文件,而不是这个首选顺序:1,2,3,4,(...), 11,12,13。有没有办法可以将*定义为整数,然后以某种方式将其调整为此代码?
答案 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])