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))
答案 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!")