Ошибка Python/PSSE: TypeError: требуется целое число
Я получаю сообщение об ошибке в конце моего кода при попытке загрузить информацию в PSSE. Моя цель - как только все данные были организованы так, как я хотел, следующим шагом было использование этих организованных данных и их импорт в PSSE. Все до этого работает, но как только я использую PSSE API, ничего не работает. Я получаю эту ошибку: psspy.bsys(1,0,[0.0,0.0],0,[],1,[bus],0,[],0,[]) Файл ".\ Psspy.py", строка 46020, в bsys TypeError: требуется целое число.
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])
1 ответ
for bus in busses_in_year[location]:
print(bus)
Что это печатает? Из предыдущего кода я думаю bus
на самом деле tuple
:
busses_in_year[location].append((bus, change, isload))
Когда вы звоните bsys
с [bus]
он использует последнее значение bus
после цикла busses_in_year[location]
, Функция bsys
ожидает целое число, но вы даете ему полное tuple
,
Я не уверен, как исправить ваш код, поскольку может не иметь смысла просто брать последнюю шину в году, поэтому вам, вероятно, нужно исправить это в первую очередь.
Но если вы хотите правильно распаковать tuple
(bus, change, isload)
Вы можете сделать следующее:
for bus, change, isload in busses_in_year[location]:
print(bus)