【问题标题】:os.walk() to match contents of a files from a CSV fileos.walk() 匹配 CSV 文件中文件的内容
【发布时间】:2018-03-29 17:13:16
【问题描述】:

我想使用 CSV 文件搜索两个单词,这是使用 os.walk() 方法递归查看rootDir 中的每个文件完成的,但不太确定我缺少什么完成我的代码。我正在寻找的两个词位于两个单独的文件中:

XZOXNEOXXTWX, YOEYTWOYZYNY

首先我创建了一个 csv 来查找某些单词,然后我创建了 os.walk() 方法并尝试从 CSV 文件中读取文本以输出匹配的内容。我浏览了相当多的材料,但我希望它与我想要输出的内容不匹配。

appendData = []
mPath = r"C:\Users\test\Documents\test"
wordstoSearch = r"C:\Users\test\Documents\test\strings.csv"

for rootDir, subDir, files in os.walk(mPath, topdown=True):
    print('Root Directory:', rootDir)
    for x in files: 
        with open(os.path.join(files)):
            with open ('strings.csv', 'rt') as stringSearch:
                if wordstoSearch in stringSearch.read():
                    appendData.append('File:   {}\nMatching Content: {}\n'.format(x, wordstoSearch))
appendData = '\n'.join(appendData)
print (appendData)

【问题讨论】:

    标签: python python-3.x csv string-matching os.walk


    【解决方案1】:

    您应该使用脚本顶部的csv 阅读要检查的单词一次。然后小心你如何构建文件名来检查 - 你需要将根目录加入文件名。最后,读取每个目标文件,然后遍历要检查的单词列表。

    import csv
    
    appendData = []
    mPath = r"C:\Users\test\Documents\test"
    wordstoSearch = r"C:\Users\test\Documents\test\strings.csv"
    
    # get the words to check
    with open(wordstoSearch) as fp:
        reader = csv.reader(fp)
        words = [cell.strip() for cell in next(reader)]
    
    # walk the tree
    for rootDir, subDir, files in os.walk(mPath, topdown=True):
        print('Root Directory:', rootDir)
        for x in files: 
            with open(os.path.join(rootDir, x)) as check_fp:
                text = check_fp.read()
                for word in words:
                    if word in text:
                        appendData.append(
                            'File:   {}\nMatching Content: {}\n'.format(x, word))
    appendData = '\n'.join(appendData)
    print (appendData)
    

    【讨论】:

    • builtins.AttributeError: 模块 'csv' 没有属性 'reader'
    • 您在本地目录中是否有一个名为csv.py 的脚本?它可能掩盖了python库中的那个。试试print(csv.__file__) 看看它是否是标准的。
    • 它带我回到保存脚本的位置,而不是 wordtoSearch csv 文件
    • 这是对csv.__file__ 问题的回答吗?你的脚本是否命名为csv.py
    • 是的,但我不明白为什么它是 csv.py 而不是 strings.csv
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 2018-07-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多