如何在Python中打开某种类型的所有文件并进行处理?

Imr*_*an 4 python

我正在试图弄清楚如何让python遍历一个充满csv文件的目录,处理每个文件并吐出带有修剪的值列表的文本文件.

在这个例子中,我正在迭代一个包含许多不同类型列的CSV,但我真正想要的只是名字,姓氏和关键字.我有一个充满了这些具有不同列的csv的文件夹(除了它们在csv中共享名字,姓氏和关键字).打开该文件夹的最佳方法是什么,浏览每个csv文件,然后将其全部吐出为自己的csv文件,仅用于文本列表,如下例所示.

import csv
reader = csv.reader(open("keywords.csv"))
rownum = 0
headnum = 0
F = open('compiled.txt','w')
for row in reader:
    if rownum == 0:
        header = row;
        for col in row:
            if header[headnum]=='Keyword':
                keywordnum=headnum;
            elif header[headnum]=='First Name':
                firstnamenum=headnum;
            elif header[headnum]=='Last Name':
                lastnamenum=headnum;
            headnum +=1
    else:
        currentrow=row
        print(currentrow[keywordnum] + '\n' + currentrow[firstnamenum] + '\n' + currentrow[lastnamenum]) 
        F.write(currentrow[keywordnum] + '\n')

    rownum +=1
Run Code Online (Sandbox Code Playgroud)

Geo*_*lly 8

最好的方法可能是使用shell的globbing能力,或者Python的glob模块.

Shell(Linux,Unix)

贝壳:

python myapp.py folder/*.csv

myapp.py:

import sys
for filename in sys.argv[1:]:
    with open(filename) as f:
        # do something with f
Run Code Online (Sandbox Code Playgroud)

Windows(或者没有shell可用.)

import glob
for filename in glob.glob("folder/*.csv"):
    with open(filename) as f:
        # do something with f
Run Code Online (Sandbox Code Playgroud)

注意:Python 2.5需要 from __future__ import with_statement