如何在目录中获取最新yymm的文件?

时间:2017-11-10 12:55:53

标签: python-3.x

目录中有多个文件也包含数字和非数字。让我们说abc1710.csv,xyz1709.txt,abc1708.txt,abc.txt,xyz.csv。 我想从fileName中仅提取最新的YYMM。

FileNames = (next(os.walk('C:\\Python34\\PyScript'))[2])

def check_file_name(f):
    try:
        digits = f[-4:]
        if len(digits) != 4:
            return False
        int(f[-4:])
    except:
        return False
    return True
# first filter out bad file names:
good_filenames = [x for x in FileNames if check_file_name(x)]

# now run the code on "good names" only:
fileName=(max(good_filenames))
value=(fileName[-4:])
result = re.sub(r'[a-z]+', '', fileName)
print(result)

1 个答案:

答案 0 :(得分:0)

函数check_file_name假定扩展已经被修剪,但是你给它整个文件名。应该通过

来解决
good_filenames = [x for x in FileNames if check_file_name(x[:-4])]

此外,如果您想获得最大的数字,您还必须对数字进行比较,而不是文件名:

fileName=max(good_filenames, key=lambda x: int(x[-8:-4]))

未来的建议:

  • 除了课程名称
  • 外,不要使用CamelCase
  • 没有必要在函数调用周围添加括号(例如(max(good_filenames))