5

我有一个成功处理单个文件的 Python 脚本。我正在尝试编写一个for循环来让它获取用户输入的目录中的所有文件。但是,它只处理目录中的文件之一。

下面的代码后面是对data. 我需要以某种方式关闭for循环吗?

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()
4

3 回答 3

7

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

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())
于 2012-09-19T15:54:12.597 回答
4

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

于 2012-09-19T16:22:36.233 回答
1

为您调试:

对于 os.listdir(path) 中的文件:
    current_file = os.path.join(路径,文件)
    打印当前文件


检查 current_file 的输出

顺便说一句:你是按制表符缩进你的代码吗?

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

这是不好的风格

于 2012-09-19T15:58:41.480 回答