[英]How can I accurately search a directory with elements from a text file?
Fairly newish to python.对 python 来说相当新。 I'm trying to use a list made from a text file to search directories for files and folders.
我正在尝试使用由文本文件组成的列表来搜索文件和文件夹的目录。 Its working to certain extent but only if the search element is at the start of the file/folder name as I'm using .startswith().
它在一定程度上起作用,但前提是搜索元素位于文件/文件夹名称的开头,因为我正在使用 .startswith()。
The code I'm using is below.我正在使用的代码如下。
I'm thinking regex might be the way to go but can't seem to figure it out.我认为正则表达式可能是要走的路,但似乎无法弄清楚。
Any help appreciated.任何帮助表示赞赏。
Thanks.谢谢。
import os
def data_cleansing(path):
dirscount = 0
filescount = 0
with open("Y:\Admin\Data Cleansing\DCList.txt","r") as f:
x = f.readlines()
x = [x.replace("\n","") for x in x]
#print(x)
for root, dirs, files in os.walk(path):
for dirs in dirs:
if dirs.startswith(tuple(x)):
dirscount = dirscount + 1
#print(dirscount)
print(os.path.join(dirs))
for root, dirs, files in os.walk(path):
for files in files:
if files.startswith(tuple(x)):
filescount = filescount + 1
#print(filescount)
print(os.path.join(files))
total = (dirscount + filescount)
print(total,"files and folders found in",path,"that need cleansing.")
data_cleansing(r"G:\Processed\failed")
print("*"*70)
data_cleansing(r"G:\Processed\done")
print("*"*70)
data_cleansing(r"S:\Prosort")
print("*"*70)
data_cleansing(r"S:\Prosort_Archive")
Does this fit your needs?这是否符合您的需求?
from os import scandir
find_list = ['Uni', '.doc', 'XML']
path = r"c:\\Autoit\\ForumTests\\"
def scantree(path):
"""Recursively yield DirEntry objects for given directory."""
for entry in scandir(path):
if entry.is_dir(follow_symlinks=False):
yield from scantree(entry.path)
else:
yield entry
if __name__ == '__main__':
for entry in scantree(path):
for pattern in find_list:
if pattern in entry.path:
print(pattern, '-->', entry.path)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.