我有一个成功处理单个文件的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()
答案 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:你是否用标签缩进代码?
因为代码中有不同的缩进长度。
这是糟糕的风格