使用os.walk读取文件,遍历路径时遇到问题
这是我所有的代码,我正在尝试调试它,但似乎在使用os.walk的时候,我无法读取文件。问题是,如果不切换目录,我会遇到一个错误,说找不到'out.csv'。所以我用了chdir()来切换到那个目录以读取文件,但现在它只会读取那一个文件。我估计应该有300多个这样的文件。所以在我使用chdir()之后,它似乎只读取了第一个文件就停止了。
#! /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行,并计算这些行的平均值。我在遍历路径和打开文件时遇到了问题。
1 个回答
2
去掉 chdir
,直接用 f = csv.reader(open(os.path.join(root, 'out.csv'),'rb'))
这行代码。