搜索包含列表中的单词并具有特定文件扩展名的文件名

时间:2016-05-04 11:05:22

标签: python search os.walk contain

python的初学者。我试图在用户文件夹中搜索保存在文件夹中的非法内容。我想找到包含以下列表中的一个或多个单词的所有文件,并且这些文件也有一个列出的扩展名。

我可以使用file.endswith搜索文件,但不知道如何添加单词条件。

我浏览了网站,了解了如何搜索某个单词而不是单词列表。

提前谢谢

import os
L = ['720p','aac','ac3','bdrip','brrip','demonoid','disc','hdtv','dvdrip',
        'edition','sample','torrent','www','x264','xvid']

for root, dirs, files in os.walk("Y:\User Folders\"):
    for file in files:

            if file.endswith(('*.7z','.3gp','.alb','.ape','.avi','.cbr','.cbz','.cue','.divx','.epub','.flac',
                              '.flv','.idx','.iso','.m2ts','.m2v','.m3u','.m4a','.m4b','.m4p','.m4v','.md5',
                              '.mkv','.mobi','.mov','.mp3','.mp4','.mpeg','.mpg','.mta','.nfo','.ogg','.ogm',
                              '.pla','.rar','.rm','.rmvb','.sfap0','.sfk','.sfv','.sls','.smfmf','.srt,''.sub',
                              '.torrent','.vob','.wav','.wma','.wmv','.wpl','.zip')):

                    print(os.path.join(root, file))

2 个答案:

答案 0 :(得分:0)

使用py.path.local

中的py

py包(由$ pip install py安装)为处理文件提供了一个非常好的界面。

from py.path import local


def isbadname(path):
    bad_extensions = [".pyc", "txt"]
    bad_names = ["code", "xml"]
    return (path.ext in bad_extensions) or (path.purebasename in bad_names)


for path in local(".").visit(isbadname):
    print(path.strpath)

说明:

导入

from py.path import local

py.path.local函数创建" objectified"文件名。为了保持我的代码简短,我导入 这样只使用local来对文件名字符串进行客观化。

创建到本地目录的客观化路径:

local(".")

创建的对象不是字符串,而是一个对象,它有许多有趣的属性和方法。

列出某个目录中的所有文件:

local(".").visit("*.txt")

返回一个生成器,提供扩展名为".txt".的文件的所有路径。

检测要生成的文件的替代方法是提供一个函数,该函数获取参数path (对象文件名)如果要使用文件则返回True,否则返回False

函数isbadname正是为了这个目的。

如果您想要谷歌获取更多信息,请使用 py path local (名称py没有提供良好的点击量。)

有关详情,请参阅https://py.readthedocs.io/en/latest/path.html

请注意,如果您使用pytest软件包,py随附安装(好的 原因 - 它使与文件名相关的测试更具可读性和更短性。)

答案 1 :(得分:0)

也许最好进行反向搜索,并显示与您想要的文件类型不匹配的文件的警告。例如,你可以这样做:

if file.endswith(".txt", ".py"):
  print("File is ok!")
else:
  print("File is not ok!")