昨天终于搞定了,刚开始学习python。写完之后还是比较有成就感的。虽然比较菜。
1 #!/usr/bin/env python 2 # coding: utf-8 3 # author: h3i_dan 4 # filename: mergefile.py 5 # version: v1.0 6 ############################ 7 8 import os 9 10 def getdirs(a): 11 '''得到iislog目录下有那些内容,把每个log文件以列表的形式输出''' 12 export = [] 13 contents = os.walk(a) 14 for root, dirs, files in contents: 15 for file_a in files: 16 export.append(os.path.join(root, file_a)) # os.path.join() 将路径和文件链接起来 17 18 return export 19 20 def getcont(b): 21 ''' 通过循环分别读取每个列表中的你想得到的文件的名称,将她们的内容放到123.txt中''' 22 for i in getdirs(a): 23 if b in i: 24 25 filename = open(i, 'r') 26 collect = filename.read() 27 total = open('d:\\123.txt', 'a') 28 total.writelines(collect) 29 30 else: 31 print 'nothing' 32 filename.close() 33 total.close() 34 35 if __name__ == '__main__': 36 37 a = 'e:\\' 38 b = raw_input('Your Required documents >> ') 39 getcont(b)
html段落还不会写,会写的时候改正过来。
这个小程序,历尽了千辛万苦啊。写了好几天,最开始不知道怎么遍历目录,知道用os之后不知道用里面的什么函数。之后发现读取不了文件,最开始的代码是这样的:
1 def getdirs(a): 2 export = [] 3 contents = os.walk(a) 4 for root, dirs, files in contents: 5 export.append(files) 6 7 return export 8 9 def getcont(c): 10 11 for i in getdirs(a): 12 13 for b in i: 14 15 if b == c: 16 17 filename = open(b, 'r') 18 collect = filename.read() 19 total = open('d:\\123.txt', 'a') 20 total.writelines(collect) 21 22 else: 23 print 'nothing' 24 filename.close() 25 total.close()
这样写的话,可以读取出文件的名称,可是,仅仅只能读出文件的名称。没有文件目录。filename = open(b, 'r') filename在open的时候就会找不到b。给出一个报错。
百思不得其解啊。后来李同学帮了这个忙。多谢李同学了。通过使用os.path.join()这个方法,就很容易了。
ok,其实写这个小程序就是为了方便自己iis日志。很多站点的流量比较小,他们又在同一个服务器里面,看起来很麻烦。通过这个小程序,可以把他们放到一起查看。有一个弊端,就是你分不清出现问题的日志是哪一个站点的了。不过,可以通过ctrl-F在日志文件排查了。
特别鸣谢:李同学