Plot multiple PSSE "out" files
Hi,
I recently came across some code that shows how to run PSSE from python and the some tricks with the dyntools module. This is the code.
The code works great but my problem is, instead of entering the name of each out file, is there a way of plotting all the outfiles in a directory?
Thanks.
----------------------------
import os, sys
# =============================================================================================
# Get installed location of latest PSS(R)E version
def latest_psse_location():
    import _winreg
    ptiloc = r"SOFTWARE\PTI"
    ptikey = _w
    inreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, ptiloc, 0, _winreg.KEY_READ)
    ptikeyinfo = _winreg.QueryInfoKey(ptikey)
    numptisubkeys = ptikeyinfo[0]
    vdict = {}
    for i in range(numptisubkeys):
        vernum = _winreg.EnumKey(ptikey, i)
        try:
            n = int(vernum[-2:])
            vdict[n]=vernum
        except:
            pass
    vers = vdict.keys()
    vers.sort()
    k = vers[-1]
    lver = vdict[k]
    lverloc = ptiloc + "\\" + lver + "\\" + "Product Paths"
    lverkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, lverloc, 0, _winreg.KEY_READ)
    lverdir, stype = _winreg.QueryValueEx(lverkey, 'PsseInstallPath')
    _winreg.CloseKey(ptikey)
    _winreg.CloseKey(lverkey)
    return lverdir
pssedir = latest_psse_location()
pssedir = str(pssedir)              # convert unicode to str
# =============================================================================================
# Files Used
pssbindir  = os.path.join(pssedir,'PSSBIN')
exampledir = os.path.join(pssedir,'EXAMPLE')
savfile    = os.path.join(exampledir,'savcnv.sav')
snpfile    = os.path.join(exampledir,'savnw.snp')
outfile1   = os.path.join(exampledir,'bus154_fault.out')
outfile2   = os.path.join(exampledir,'bus3018_gentrip.out')
outfile3   = os.path.join(exampledir,'brn3005_3007_trip.out')
prgfile    = os.path.join(exampledir,'dyntools_demo_progress.txt')
# =============================================================================================
# Check if running from Python Interpreter
exename = sys.executable
p, nx   = os.path.split(exename)
nx      = nx.lower()
if nx in ['python.exe', 'pythonw.exe']:
    os.environ['PATH'] = pssbindir + ';' + os.environ['PATH']
    sys.path.insert(0,pssbindir)
# =============================================================================================
import dyntools
# =============================================================================================
# Run Dynamic simulation on SAVNW to generate .out files
def run_savnw_simulation():
    import redirect
    redirect.psse2py()    
    import psspy
    ierr = psspy.psseinit(buses=80000)  # choose here bus numbers you want
    psspy.lines_per_page_one_device(1,90)
    psspy.progress_output(2,prgfile,[0,0])
    psspy.case(savfile)
    psspy.rstr(snpfile)
    psspy.strt(0,outfile1)
    psspy.run(0, 1.0,1000,1,0)
    psspy.dist_bus_fault(154,1, 230.0,[0.0,-0.2E+10])
    psspy.run(0, 1.05,1000,1,0)
    psspy.dist_clear_fault(1)
    psspy.run(0, 5.0,1000,1,0)
    psspy.case(savfile)
    psspy.rstr(snpfile)
    psspy.strt(0,outfile2)
    psspy.run(0, 1.0,1000,1,0)
    psspy.dist_machine_trip(3018,'1')
    psspy.run(0, 5.0,1000,1,0)
    psspy.case(savfile)
    psspy.rstr(snpfile)
    psspy.strt(0,outfile3)
    psspy.run(0, 1.0,1000,1,0)
    psspy.dist_branch_trip(3005,3007,'1')
    psspy.run(0, 5.0,1000,1,0)
    psspy.lines_per_page_one_device(2,10000000)
    psspy.progress_output(1,"",[0,0])
# =============================================================================================
# 1. Data extraction/information
def test_data_extraction(chnfobj):   
    print '\n Testing call to get_data'
    sh_ttl, ch_id, ch_data = chnfobj.get_data()
    print sh_ttl
    print ch_id
    print '\n Testing call to get_id'
    sh_ttl, ch_id = chnfobj.get_id()
    print sh_ttl
    print ch_id
    print '\n Testing call to get_range'
    ch_range = chnfobj.get_range()
    print ch_range
    print '\n Testing call to get_scale'
    ch_scale = chnfobj.get_scale()
    print ch_scale
    print '\n Testing call to print_scale'
    chnfobj.print_scale()
    print '\n Testing call to txtout'
    chnfobj.txtout(channels=[1,4])
    print '\n Testing call to xlsout'
    chnfobj.xlsout(channels ...