我面临的问题是找出文件处理程序背后的文件类型。
我需要这个,因为我的 apache_log_parser 无法解析一行并且整个程序被撞了出来:
Traceback (most recent call last): File "VirtualEnvs/moslog/bin/mosloganalisys.py", line 108, in
<module>
totalines = count_agent(logfilehandler,agentcount,totalines) File "VirtualEnvs/moslog/bin/mosloganalisys.py", line
27, in count_agent
log_line_data = line_parser(line) File "VirtualEnvs/moslog/lib/python2.7/site-packages/apache_log_parser/__init__.py",
line 225, in parse
raise LineDoesntMatchException(log_line=log_line, regex=self.log_line_regex.pattern)
原因是文件处理程序指向一个 gz 文件。不管我是否使用 gzip 库来解压缩文件,因为这是一个双重压缩文件 *.gz.gz,因此解压缩的文件又是另一个 gzip 文件。
所以我尝试使用 python-magic 库来找出文件类型,但似乎需要一个文件名。
72 """
73 self._thread_check()
---> 74 if not os.path.exists(filename):
75 raise IOError("File does not exist: " + filename)
76
/usr/lib64/python2.7/genericpath.pyc in exists(path)
16 """Test whether a path exists. Returns False for broken symbolic links"""
17 try:
---> 18 os.stat(path)
19 except os.error:
20 return False
我已经实现了一个 try:/expect: 语句,但这并不能真正解决处理大量无用行的问题。
你建议怎么做?谢谢