簡體   English   中英

如何准確地搜索包含文本文件中元素的目錄?

[英]How can I accurately search a directory with elements from a text file?

對 python 來說相當新。 我正在嘗試使用由文本文件組成的列表來搜索文件和文件夾的目錄。 它在一定程度上起作用,但前提是搜索元素位於文件/文件夾名稱的開頭,因為我正在使用 .startswith()。

我正在使用的代碼如下。

我認為正則表達式可能是要走的路,但似乎無法弄清楚。

任何幫助表示贊賞。

謝謝。

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")

這是否符合您的需求?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM