我要做的是遍历一个日志文件的目录,它以“filename001.log”开头,一个目录中可以有100个文件
我要对每个文件运行的代码是检查以确保日志的第8个位置始终包含一个数字。我怀疑是一个非数字正在抛出我们的解析器。下面是一些简单的代码,我想检查一下:
# import re
from urlparse import urlparse
a = '/folderA/filename*.log' #<< currently this only does 1 file
b = '/folderB/' #<< I'd like it to write the same file name as it read
with open(b, 'w') as newfile, open(a, 'r') as oldfile:
data = oldfile.readlines()
for line in data:
parts = line.split()
status = parts[8] # value of 8th position in the log file
isDigit = status.isdigit()
if isDigit = False:
print " Not A Number :",status
newfile.write(status)
我的问题是:
听起来很简单,我只是不太擅长编码。在
要读取与给定模式匹配的一个目录中的文件并写入另一个目录,请使用^{} module 和
os.path
函数构造输出文件:这将创建空文件,即使没有找到错误的条目。您可以等到文件处理完毕(并且关闭
with
块),然后检查输出的文件大小,如果为空,则将其删除;或者,您可以采用一种惰性方法,在无条件开始迭代之前删除输出文件,但不要打开它;只有当你得到一个错误的值时,你才会打开这个文件(用append代替write来防止前面循环的输出被丢弃),写进去,允许它关闭。在导入操作系统并使用:
for filenames in os.listdir('path'):
。这将列出目录中的所有文件,包括子目录。只需打开具有正确路径的第二个文件。由于已经通过上述方法迭代得到了filename,因此只需替换目录。您可以使用
os.path.join
来实现这一点。相关问题 更多 >
编程相关推荐