以下是我写的一段代码,目的是从指定目录中批量提示文件中的指定内容(PackageName),以脚本的形式运行可以满足需求,但现在想做成模块以被其它脚本调用,自己改了很久都不能满足,现发出来求助下高手,不胜感激。
# -*- coding: GBK -*-
__author__ = 'Kevin'
import os
import re
def traverse(path):
'''
遍历指定路径下的所有文件
'''
filesName = []
for root,dirs,files in os.walk(path):
for fn in files:
filesName.append(os.path.join(root,fn))
return filesName
def reCrash(s):
'''
正则匹配提取出crashed package name
如:从// CRASH: com.wandoujia.phoenix2 (pid 3903)中提取出com.wandoujia.phoenix2
'''
m = '//\sCRASH:\s(.*)\s[(]pid\s(.*)[)]'
n = re.match(m,s)
if n:
return n.group(1)
else:
return None
filesList = traverse('D:\\TestDoc')
crashCount = []
for i in range(len(filesList)):
try:
for line in open("%s" %filesList[i]):
mCrash = reCrash(line)
if mCrash:
crashCount.append(mCrash)
except:
print('Faild to open file the %s.' %filesList[i])
print(crashCount)
通过网友的帮助问题已解决,代码如下:
# -*- coding: GBK -*-
__author__ = 'A'
import os
import re
def traverse(path):
'''
遍历指定路径下的所有文件
'''
filesName = []
for root,dirs,files in os.walk(path):
for fn in files:
filesName.append(os.path.join(root,fn))
return filesName
def reCrash(s):
'''
正则匹配提取出crashed package name
如:从// CRASH: com.wandoujia.phoenix2 (pid 3903)中提取出com.wandoujia.phoenix2
'''
m = '//\sCRASH:\s(.*)\s[(]pid\s(.*)[)]'
n = re.match(m,s)
if n:
return n.group(1)
else:
return None
def crashlist(filesList):
crashCount = []
for filesName in filesList:
try:
for line in open(filesName):
mCrash = reCrash(line)
if mCrash:
crashCount.append(mCrash)
except:
print('Faild to open file the %s.' %filesName)
return crashCount
if __name__ == '__main__':
filesList = traverse('D:\\TestDoc')
print crashlist(filesList)
在同一文件夹下创建一个__init__.py
应该就可以,在其他地方通过import module_name.xxxx
导入了