Python 搜索包含列表中单词且具有特定文件扩展名的文件名
python初学者。我正在尝试搜索用户文件夹中保存的非法内容。我想从下面的列表中查找包含一个或多个单词的所有文件,并且这些文件还具有列出的扩展名 我可以使用file.endswith搜索文件,但不知道如何添加word条件 我浏览了这个网站,只知道如何搜索某个单词,而不是一个单词列表 先谢谢你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',
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
frompy
包
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()
。检查文档,您会喜欢的(提供了更多的复制
、重命名
、存在
等方法。)