如何使用我的脚本迭代文件夹并写入文件名?

时间:2015-10-14 04:25:01

标签: python

我编写了一个脚本,可以在日志文件中找到最大值。然后我可以将最大值写入另一个文件。 我的问题: 一个。是如何对目录中的所有文件运行它 湾将“文件名”+“最大值”写入1个文件。

这是我的代码:

  1 import re
  2
  3 a = 'NA total MB July.csv'
  4 b = 'Total.csv'
  5
  6 with open(a, 'r') as f1:
  7         with open(b,'w') as f2:
  8                 header = f1.readline()
  9                 data= f1.readlines()
 10                 pattern= re.compile(",|\s")
 11                 maxMB=[]
 12                 for line in data:
 13                         parts = pattern.split(line)
 14                         #print "Log line split",parts #splits the number
 15                         mbCount= parts[2] #index of the number
 16                         mbint=float(mbCount)
 17                         maxMB.append(mbint)# creates a list of all MBs
 18                         #print "MAX: ", maxMB #prints out the max MB
 19                 highest=max(maxMB)
 20                 print highest
 21                 f2.write(str(highest))#writes highest value to file

这是我的文件输出

167.94

我希望在Total.csv中看到的是

NA total MB July : 167.94
NA total MB August: 123.45
...
..
. For all the csv files with in a folder

如果不一次处理1个文件并手动更改文件名,就无法弄清楚如何完成这项工作。对此n00b的任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用os.listdir()来获取当前目录中的文件。

files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
    #do something

您可以在Total.csv模式下打开ab文件,这样您就可以将所有最大值附加到该文件中。

with open('Total.csv', 'ab') as out:
    writer = csv.writer(out, delimiter=',', quotechar='"',quoting=csv.QUOTE_ALL)
    row = (,)
    writer.writerow(row)