python Python函数,用于从大量复杂的异构日志文件中获取数据,例如由MELTS或VASP生成的日志文件。你只需给它一个fi

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python Python函数,用于从大量复杂的异构日志文件中获取数据,例如由MELTS或VASP生成的日志文件。你只需给它一个fi相关的知识,希望对你有一定的参考价值。

import numpy as np
import re
from StringIO import StringIO

def GetChunkFromTextFile(FileName, StartStr, StopStr, skip_header=0, skip_footer=0, LastHit=True, DataType='array'):
    # DataType means we can extract the chunk and then turn it into:
    # 1) Numpy table 'numpy'
    # 2) return the raw text 'raw'
    DataType = DataType.lower()

    # Read the file.
    try:
        with open(FileName, 'r') as myfile:
            data = myfile.read()
    except:
        print 'Failed to open ' + FileName + '.  Skipping.'
        return

    # This regex looks for the data between the start and top strings.
    reout = re.compile('%s(.*?)%s' % (StartStr, StopStr), re.S)
    try:
        # Extract just the data we want.
        if LastHit == False:
            SectionStr = reout.search(data).group(1)
        else:
            SectionStr = reout.findall(data)[-1]
    except:
        # It is possible that the user asked for something that isn't in the file.  If so, just bail.
        return None

    if DataType == 'raw':
        # Now apply skip_header and skip_footer
        SectionData = SectionStr
        SectionData = ''.join(SectionData.splitlines(True)[skip_header:])
        if skip_footer > 0:
            SectionData = ''.join(SectionData.splitlines(True)[:-skip_footer])

    if DataType == 'float':
        SectionData = np.float(SectionStr)

    if DataType == 'array':
        # Convert it into a numpy array.
        SectionData = np.genfromtxt(StringIO(SectionStr), skip_header=skip_header, skip_footer=skip_footer, dtype=None)

    return SectionData

以上是关于python Python函数,用于从大量复杂的异构日志文件中获取数据,例如由MELTS或VASP生成的日志文件。你只需给它一个fi的主要内容,如果未能解决你的问题,请参考以下文章

python 示例函数,用于从python函数生成呈现的HTML模板

Python中两个列表的异或[重复]

如何使用 Python 内置函数成功处理大量 .txt 文件?

Python入门-5函数:08递归函数

用于从文件中选择单个 Python 函数的 Bash 脚本

[Leetcode421](python): 数组中两个数之间最大的异或值