在python中找到文件处理程序后面的文件类型

时间:2015-05-22 12:32:31

标签: python apache file-type python-magic

我面临的问题是找出文件处理程序背后的文件类型。

我需要这个,因为我的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,因此解压缩的文件又是另一个gziped文件。

所以我尝试使用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:语句,但这并没有真正解决处理大量无用行的问题。

你有什么建议? 感谢

1 个答案:

答案 0 :(得分:0)

在魔法库中看起来更好我找到了这样做的方法:

logfile=open('workspace/mosloganalysis/access.log.1429142400','r').read(1024)
print logfile
magic.from_buffer(logfile)

您只需要打开读取前1024个字符并使用magic.from_buffer函数

的文件