2011-08-31 104 views
0

这里是我的代码的全部,我试图调试它,但它似乎我不能做任何阅读文件,而使用os.walk 。问题在于,如果没有改变目录,我遇到了一个'out.csv'找不到的错误,所以我放入一个chdir(),移动到该目录来读取该文件,但现在它只会读取一个文件。我的估计是应该有300多个这些文件。所以它似乎在我放入chdir()后读取第一个文件后停止。os.walk和读取文件,有一些步行路径的问题

#! /usr/bin/env python 
import csv, os 

current = os.curdir 
filescntd = 0 
avg = 0 

for root, dirs, files in os.walk('ARCIVE'): 
    for file in files: 
    base, ext = os.path.splitext(file) 
    if ('csv' in ext): 
     os.chdir(root) 
     print root 
     f = csv.reader(open('out.csv','rb')) 
     count = 0 
     for row in f: 
     if (count >= 6 and count <= 10): 
      tempavg = 0 
      for i in row: 
      tempavg += float(i) 
      filescntd += 1 
      tempavg /= len(row) 
      avg += tempavg 
     count += 1 
     os.chdir(current) 

os.chdir(current) 
print '---' 
avg /= 5.0 
print avg 

输出:

ARCIVE/8-15-11/temp/29033 
--- 
0.02775 

filescntd的选择是有点误导,它是数字量平均化,并且它涉及到40

为了澄清,我想要这个程序要做的就是走这个目录树并打开扩展中包含'csv'的所有文件,并读取第6-10行,并对这些行进行平均。我在走路和打开文件时遇到问题。

+0

我遇到的语言和信息缺乏了一点小麻烦。你能澄清你的语言,并详细说明你正在尝试做什么。 –

+0

其python。我试图做的是让步行正确地步行目录树并找到(并打开)包含'.csv'的所有文件 – Jim

+2

通过“澄清你的语言”,他的意思是你的英语。我和他在一起。我不知道“看起来我可以做任何改变目录”的意思。有没有人真的甚至决定使用甚至去想要做更像? – kindall

回答

2

删除chdirf = csv.reader(open(os.path.join(root, 'out.csv'),'rb'))

+0

做到了,谢谢。 – Jim