ディレクトリ内の計算結果をまとめるプログラム

そろそろ引き継ぎの時期になっている。
計算結果の重要な部分を全部エクセルにまとめて渡すようにとの指示があった。
流石に数百もの計算結果を手作業でまとめるのは骨が折れるのでpython2で自動化した。
カレントディレクトリ内にある全ての*.logファイルを読み込んで、エネルギーや振動数などの重要な値を表にして出すプログラムである。Gaussian09用に書いてある。
実行後は出てきた結果をコピペするだけでよい。

#!/bin/python
import linecache
import sys
import glob
import os

logfiles = sorted(glob.glob('./*.log'))
print "absolute path:", os.getcwd()
print "Filename  ElecEnergy ElecZPE Enthalpy GibbsFreeEnergy ThermalEnergy CV S LowestFreq" 

for logs in logfiles:
    linenum  = sum(1 for line in open(logs))

    Firstfreq        = 0
    Secondfreq       = 0
    ElecEnergy       = 0    
    ElecZPE          = 0
    Enthalpy         = 0
    GibbsFreeEnergy  = 0
    ThermalEnergy    = 0
    CV               = 0
    S_entropy        = 0

    FreqChk = 1
    OptFlag      = 0
    ChargeFlag   = 1

    try:
        for line in range(linenum):
            Linedata = linecache.getline(logs,line).split()
            try:
                if Linedata[0] == "Frequencies" and Linedata[1] == "--" and FreqChk == 1:
                    Firstfreq  = Linedata[2]
                    Secondfreq = Linedata[3]
                    FreqChk   = 0

                if Linedata[4] == "zero-point" and Linedata[5] == "Energies=":
                    ElecZPE  = Linedata[6]
                if Linedata[4] == "thermal" and Linedata[5] == "Enthalpies=":
                    Enthalpy  = Linedata[6]
                if Linedata[4] == "thermal" and Linedata[5] == "Free":
                    GibbsFreeEnergy =  Linedata[7]
                if Linedata[0] == "SCF" and Linedata[1] == "Done:":
                    ElecEnergy = Linedata[4]
            except:
                pass

        Thermalprintflag = 0
        for line in range(linenum):
            Linedata = linecache.getline(logs,line).split()
            try:
                if Linedata[0] == "E" and Linedata[2] == "CV":
                    Thermalprintflag = 1
                if Linedata[0] == "Total" and Thermalprintflag == 1:
                    ThermalEnergy = Linedata[1]
                    CV            = Linedata[2]
                    S_entropy     = Linedata[3]
                    Thermalprintflag = 0
            except:
                pass

        print logs,ElecEnergy,ElecZPE,Enthalpy,GibbsFreeEnergy,ThermalEnergy,CV,S_entropy,Firstfreq

    except:
        pass