全局匹配文件(某些扩展名除外)

时间:2019-03-25 16:54:50

标签: python macos unix

Python新手!我正在尝试将globmax结合使用,以查找文件夹中最后修改的文件,但排除扩展名为pdf的一种类型。我尝试过:

在不排除的情况下,我的工作正常:

crshLogs = glob.glob(homePath+crshLogPath+'*.*')
currCrshLog = max(crshLogs , key = os.path.getmtime)

要尝试排除我尝试过的pdf:

crshLogs = glob.glob(homePath+crshLogPath+'!(*.pdf)')

还有

crshLogs = glob.glob(homePath+crshLogPath+'*.*') - glob.glob(homePath+crshLogPath+'*.pdf')

但是在两种情况下,下一行代码都以ValueError: max() arg is an empty sequence失败,因此大概没有返回任何内容。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

[filename for filename in glob.glob(homePath+crshLogPath+'*.*') if not filename.endswith('pdf')]

我也会改变

crshLogs = glob.glob(homePath + crshLogPath +'')

crshLogs = glob.glob(os.path.join(homePath, crshLogPath, *.*')

这将处理低劣的边缘情况,例如homePath不在/中结束,以及crshLog路径不是以/开头,这会造成麻烦

答案 1 :(得分:0)

您可以创建一个数组,而不将pdf放入其中:

file_list=[]
for filename in glob.glob(homePath+crshLogPath+'*.*'):
    if ".pdf" not in filename:
        file_list.append(filename)

然后从该数组获取文件名。