使用 Python CSV 和 glob 查找匹配的字符串并打印行

Using Python CSV and glob to find matching strings and print row

我有数百个 CSV 文件,我正在尝试编写一个 Python 脚本来解析所有这些文件并打印出具有匹配字符串的行。如果我们可以使用一个字符串(而不是字符串列表)让它工作,我会很高兴。使用 Python 2.7.5。到目前为止我已经想通了:

Python 中的 csv 模块将在特定列(左起第八列)中打印具有匹配字符串的行:

import csv
reader = csv.reader(open('2015-08-25.csv'))
for row in reader:
    col8 = str(row[8])
    if col8 == '36862210':
        print row  

所以以上内容适用于一个 .csv 文件。现在我需要用 glob 解析数百个 .csv 文件。 glob 模块将使用以下代码打印出所有文件名:

import glob
for name in glob.glob('20??-??-??.csv'):
    print name

我尝试将两者放在一个脚本中,但错误消息显示为:

File "test7.py", line 6, in reader = csv.reader(open(csvfiles)) TypeError: coercing to Unicode: need string or buffer, list found

import csv
import glob

csvfiles = glob.glob('20??-??-??.csv')
for filename in csvfiles:
    reader = csv.reader(open(csvfiles))
    for row in reader:
        col8 = str(row[8])
        if col8 == '36862210':
            print row

您正在尝试打开一个列表 - csvfiles 是您正在迭代的列表。

改用这个,因为 open() 需要一个文件名:

reader = csv.reader(open(filename))