简体   繁体   中英

Python/PSSE Error: TypeError: an integer is required

I am receiving an error at the end of my code when trying to load the information into PSSE. My goal is once all the data was organized how I wanted, the next step was to use that organized data and import it to PSSE. Everything before that works but once I use a PSSE API, nothing works. I get this error: psspy.bsys(1,0,[0.0,0.0],0,[],1,[bus],0,[],0,[]) File ".\\psspy.py", line 46020, in bsys TypeError: an integer is required.

import os, sys

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

from Tkinter import *
import tkFileDialog
import tkSimpleDialog
import tkMessageBox



 STUDY_CASE = 'C:\Users\RoszkowskiM\Documents\Cases\Final\ceii_Case1_SUM_2017_5050_MMWG16PF_FINAL.sav'

LOAD_GEN_DATAFILE = 'C:\Users\RoszkowskiM\Documents\CSV Files\ASTECOR_TLA.csv'

psspy.psseinit(10000)
psspy.case(STUDY_CASE)



data = list(csv.reader(open(LOAD_GEN_DATAFILE)))
mydict = {}
for row in data:
year,location,bus,change,isload = row[0:5]
# convert the types from string to Python numbers

change= float(change)
bus = int(bus)

 #If this is a year not seen before, add it to the dictionary
 if year not in mydict:
    mydict[year] = {}

 busses_in_year = mydict[year]
 if location not in busses_in_year:
     busses_in_year[location] = []

 #Add the bus to the list of busses that stop at this location
 busses_in_year[location].append((bus, change,isload))


 # assume CSV has columns as described in the doc string
 year = raw_input("Select Year of Study: ")

 location = raw_input(" Select the number associated to the TLA Pocket Location:")

 if year in mydict and location in mydict[year]:  
  busses_in_year = mydict[year]
  print("Here are all the busses at that location for that year: ")
  for bus in busses_in_year[location]:
    print(bus)


 else:
    print("Invalid Year or Location")


if isload.isdigit() and int(isload):    
    psspy.bsys(1,0,[0.0,0.0],0,[],1,[bus],0,[],0,[])
    psspy.scal_2(1,0,1,[0,0,0,0,0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0])
    psspy.scal_2(0,1,2,[0,1,0,1,0],[change,0.0,0,-.0,0.0,-.0,0])
for bus in busses_in_year[location]:
    print(bus)

What does this print? From the previous code I think bus is actually a tuple :

busses_in_year[location].append((bus, change, isload))

When you call bsys with [bus] it is using the last value of bus after looping through busses_in_year[location] . The function bsys expects an integer, but you're giving it the full tuple .

I'm not sure how to fix your code as it might not make sense to just take the last bus in the year, so you probably need to fix that first.

But if you want to properly unpack the tuple (bus, change, isload) you can do the following:

for bus, change, isload in busses_in_year[location]:
    print(bus)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM