我在目录中有大约650个csv文件。它们每个都有三个带标题的列(#ch ### kev ## ### count ###)和2050行。其中一个文件图像部分显示在此处。
ch kev count
0 0 0
1 0 0
2 0 0
. . .
. . .
. . .
100 0 30
101 0 70
. . .
. . .
200 . 1000
201 0 1037
. . .
. . .
2050 0 0
我想对列(#ch#)的特定范围(100 -200)列的列(### count ###)求和。我只能为下面显示的单个csv文件编写程序:
import csv
cr = csv.reader(open("D:\\Pythontest\\test1.csv", 'r'))
cr.next()
['ch', 'kev', 'count']
total = 0
for row in cr:
if 100 <= int(row[0]) <= 200:
total += int(row[2])
print total
但我不知道如何一次为所有文件编写程序。我想从每个文件中提取sum值并将它们放在一个单独的文件中。我使用的是Python 2.7。
答案 0 :(得分:1)
由于您有一个文件的工作程序,所有您需要的是在每个文件上使用该程序的方法。我建议做以下事情:
祝你好运,如果遇到其中一个步骤的问题,请随意发布一个更具体的新问题。
答案 1 :(得分:0)
您需要从目录中获取文件列表,然后执行for循环。
这是一个功能:
def find_csv_files( path_to_dir, suffix=".csv" ):
filenames = listdir(path_to_dir)
return [ filename for filename in filenames if filename.endswith( suffix ) ]
然后只需使用它并执行for循环:
filenames = find_csv_files("dir/directory")
for name in filenames:
print name
答案 2 :(得分:0)
试试这个:
import os
import csv
def get_all_files(directory, extension='.csv'):
dir_list = os.listdir(directory)
csv_files = []
for e in dir_list:
if e.endswith(extension):
csv_files.append(os.path.realpath(e))
return csv_files
def sum_from_csv(csv_file):
cr = csv.reader(open(csv_file, 'r'))
cr.next()
['ch', 'kev', 'count']
total = 0
for row in cr:
if 100 <= int(row[0]) <= 200:
total += int(row[2])
print total
csv_files = get_all_files('D:\\Pythontest\\')
for each in csv_files:
sum_from_csv(each)