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

Python 搜索包含列表中单词且具有特定文件扩展名的文件名,python,search,os.walk,contain,Python,Search,Os.walk,Contain,python初学者。我正在尝试搜索用户文件夹中保存的非法内容。我想从下面的列表中查找包含一个或多个单词的所有文件,并且这些文件还具有列出的扩展名 我可以使用file.endswith搜索文件,但不知道如何添加word条件 我浏览了这个网站,只知道如何搜索某个单词,而不是一个单词列表 先谢谢你 import os L = ['720p','aac','ac3','bdrip','brrip','demonoid','disc','hdtv','dvdrip', 'edition',

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

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

我浏览了这个网站,只知道如何搜索某个单词,而不是一个单词列表

先谢谢你

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))
使用来自
py
包的
py.path.local
py
软件包(install by
$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
函数创建“对象化”文件名。为了保持代码简短,我导入 通过这种方式,可以仅使用
local
对象化文件名字符串

创建本地目录的对象化路径:

local(".")
local(".").visit("*.txt")
创建的对象不是字符串,而是具有许多有趣属性和方法的对象

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

local(".")
local(".").visit("*.txt")
返回一个生成器,提供扩展名为“.txt”的文件的所有路径

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

函数
isbadname
正好用于此目的

如果您想在谷歌上搜索更多信息,请使用py path local(名称
py
点击率不高)

欲了解更多信息,请参阅

请注意,如果使用
pytest
软件包,则
py
将与其一起安装(永久 原因-它使与文件名相关的测试更具可读性和更短)。

使用
py.path.local
from
py
py
软件包(install by
$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
函数创建“对象化”文件名。为了保持代码简短,我导入 通过这种方式,可以仅使用
local
对象化文件名字符串

创建本地目录的对象化路径:

local(".")
local(".").visit("*.txt")
创建的对象不是字符串,而是具有许多有趣属性和方法的对象

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

local(".")
local(".").visit("*.txt")
返回一个生成器,提供扩展名为“.txt”的文件的所有路径

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

函数
isbadname
正好用于此目的

如果您想在谷歌上搜索更多信息,请使用py path local(名称
py
点击率不高)

欲了解更多信息,请参阅

请注意,如果使用
pytest
软件包,则
py
将与其一起安装(永久
原因-它使与文件名相关的测试更具可读性和更短)。

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

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

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

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

是否要检测文件名或文件内容中的禁用字?我假设您关心文件名中的单词。
对于L中的标记:如果文件中的标记:
?@JanVlcinsky Hi-Jan,是的,我正在查找文件名中的禁用单词。@jDo补充说,in似乎起作用。它只查找包含标记且具有声明的文件扩展名之一的文件。唯一的问题是它的搜索速度非常慢。您想在文件名或文件内容中检测禁止的单词吗?我假设您关心文件名中的单词。
对于L中的标记:如果文件中的标记:
?@JanVlcinsky Hi-Jan,是的,我正在查找文件名中的禁用单词。@jDo补充说,in似乎起作用。它只查找包含标记且具有声明的文件扩展名之一的文件。唯一的问题是它的搜索速度非常慢。谢谢,我现在就试试看。在我完成搜索并收集文件名列表后,有没有办法删除它们?@Jason当然,这就是
py.path.local
的妙处。拥有文件对象时,执行
path.remove()
。检查文档,你会喜欢的(更多的
复制
重命名
存在
等方法都有。)谢谢,我现在就开始。在我完成搜索并收集文件名列表后,有没有办法删除它们?@Jason当然,这就是
py.path.local
的妙处。拥有文件对象时,执行
path.remove()
。检查文档,您会喜欢的(提供了更多的
复制
重命名
存在
等方法。)