Ask Your Question

Anyone can help me to debug the Python program?

asked 2013-11-19 03:42:33 -0500

Bob gravatar image

updated 2013-12-31 22:24:27 -0500

JervisW gravatar image

I want to find all the .sav files in E:\007, and conver the generators and loads use cong( ) and conl( ) function, but there are some errors in the program I wrote, anyone can help me ?
Thank you very much!

import os,sys
sys.path.append(r"C:\Program Files\PTI\PSSE33\PSSBIN")
os.environ['PATH'] = r"C:\Program Files\PTI\PSSE33\PSSBIN;" + os.environ['PATH']
import psspy
import redirect
import glob

os.environ['PATH'] += ';' + PYTHONPATH


for CASE in glob.glob(os.path.join('E:\\007\\','*.sav')):


    case_root = os.path.splitext(sys.argv[1])[0] + "_C.sav")

There ERRORS are as follow:

Traceback (most recent call last):
  File "E:\007\", line 32, in <module>
    case_root = os.path.splitext(sys.argv[1])[0]
IndexError: list index out of range
edit retag flag offensive close merge delete

3 answers

Sort by ยป oldest newest most voted

answered 2013-11-19 11:25:27 -0500

terrytian gravatar image

updated 2013-11-19 20:54:35 -0500

This is because the list sys.argv contains only one element, that is your python script name, 'E:\007\'.

Since python index starts from 0, the list element sys.argv[1] is actually the second element of the list sys.arg.

so you should use the following:

case_root = os.path.splitext(sys.argv[0])[0]

oh, in that case you should use:

case_root = os.path.splitext(CASE)[0]
edit flag offensive delete link more


@terrytian Thanks for your answer, but it's look like no the thing. What I want to do is to find all the .sav files in the file box E:\007 ,and convert all the generators and loads for dynamic simulation, then the converted files named like Origianl file1.sav and the new name is 1_C.sav

Bob gravatar imageBob ( 2013-11-19 20:34:45 -0500 )edit

answered 2013-11-19 20:38:13 -0500

jconto gravatar image

updated 2013-11-19 20:39:07 -0500

to have a converted case name derive from the source sav file, use the following:

case_root = os.path.splitext(CASE)

edit flag offensive delete link more


@jconto Thanks Traceback (most recent call last): File "E:\007\", line 42, in <module> + "_C.sav") TypeError: can only concatenate tuple (not "str") to tuple In other woeds case_root = os.path.splitext(case) type(case_root) is tuple not str

Bob gravatar imageBob ( 2013-11-19 21:11:25 -0500 )edit

@jconto The only thing I want to do is to convert the name of files like savnw.sav bench.sav to savnw_C.sav bench_C.sav . In other words we want to get the name of savnw.sav by the format of string to use the python command sfile = "savnw"+"_C.sav"

Bob gravatar imageBob ( 2013-11-19 21:24:27 -0500 )edit

splitext returns two values. 'ext' is the extension of the CASE filename, use: case_root, ext = os.path.splitext(CASE)

jconto gravatar imagejconto ( 2013-11-19 22:18:41 -0500 )edit

Thanks. it works well.

Bob gravatar imageBob ( 2013-11-20 00:53:48 -0500 )edit

answered 2013-11-19 14:33:57 -0500

what python version are you using?

edit flag offensive delete link more


@Saimani Kumar Python 2.7

Bob gravatar imageBob ( 2013-11-19 20:21:18 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

[hide preview]

Question Tools


Asked: 2013-11-19 03:42:33 -0500

Seen: 462 times

Last updated: Dec 31 '13