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

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

我有数百个csv文件,我正在尝试编写一个python脚本,它将解析所有这些文件并打印出具有匹配字符串的行。如果我们能用一个字符串(而不是一个字符串列表)来实现这一点,我会很高兴的。使用python 2.7.5。到目前为止,我发现:

python中的csv模块将使用特定列(左边第八列)中的匹配字符串打印行:

1
2
3
4
5
6
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模块将用此代码打印出所有文件名:

1
2
3
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

1
2
3
4
5
6
7
8
9
10
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()需要一个文件名:

1
reader = csv.reader(open(filename))