我需要Python来处理目录中的所有文件,但它只获得一个

时间:2012-09-19 15:27:33

标签: python python-2.7

我有一个成功处理单个文件的Python脚本。我正在尝试编写一个for循环,让它获取用户输入的目录中的所有文件。但是,它只处理目录中的一个文件。下面的代码后面是对“数据”进行分析的其余脚本。我是否需要以某种方式关闭for循环?这是我的第一个Python脚本。

import os

print "Enter the location of the files: "; directory = raw_input()

path = r"%s" % directory

for file in os.listdir(path):
    current_file = os.path.join(path, file)

    data = open(current_file, "rb")

# Here's an abridged version of the data analysis

    for i in range(0, 10):
        fluff = data.readline()

    Input_Parameters = fluff.split("\t")

    output.write("%f\t%f\t%f\t%f\t%.3f\t%.1f\t%.2f\t%.2f\t%s\n" % (Voc, Isc, Vmp, Imp, Pmax, 100 * Eff, IscErr, 100 * (1 - (P2 / Pmax)), file))
    data.close()

3 个答案:

答案 0 :(得分:6)

一般来说,如果某些东西不起作用,你可以试着让事情更简单。我删除了数据分析部分并保留了下面的代码。这适用于我。我注意到如果我的路径中有一个目录,则打开将失败。我不确定你也是如此。

import os
import sys

path = '.'

for file in os.listdir(path):
    current = os.path.join(path, file)
    if os.path.isfile(current):
        data = open(current, "rb")
        print len(data.read())

答案 1 :(得分:3)

你答案中的当前代码对我来说基本上没问题。我注意到它正在为它处理的每个文件写入相同的output文件,因此可能会让您认为它没有全部处理它们。

答案 2 :(得分:1)

为你调试:


for file in os.listdir(path):
    current_file = os.path.join(path, file)
    print current_file


检查current_file的输出

BTW:你是否用标签缩进代码?

因为代码中有不同的缩进长度。

这是糟糕的风格

相关问题