2017-08-30 4 views
0

Mein Code gibt bei der Verwendung von isinstance nichts aus. Dies wird am Ende des Codes angezeigt. Ich habe versucht, year 1 und tla_2=1 einzugeben, und keine Ausgabe ist aufgetreten. Ist meine isinstance-Anweisung falsch? Bin ich für falsches Looping?isinstance gibt nichts aus

output = 'From Bus #: {}\tTo Bus #: {}\tTo Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' 
print(output.format(from_, to,name2, min_value, max_value,last_bus)) 

Excel Sheet

from __future__ import print_function 
import os.path 
import win32com.client 

#--------------------------------------------------------------------------------------------------------------------- 
xlApp = win32com.client.DispatchEx('Excel.Application') # Running Excel 
xlsPath = os.path.expanduser('C:\Users\RoszkowskiM\Desktop\UPDATED_LOAD_FORECAST_4.xlsm')# Reading xlsm file 
wb = xlApp.Workbooks.Open(Filename=xlsPath) # Opening file 
xlApp.Run('csvfile2')# Running macro---- csvfile2 is the macro name. It is under the "csv" module in the VBA editor 
wb.Save() 
xlApp.Quit() 
#--------------------------------------------------------------------------------------------------------------------- 
# WHEN RUNNING THE PROGRAM, MAKE SURE THE CSV FILE IS NOT OPEN. 

# THIS WILL PRODUCE AN ERROR WITH READING AND RUNNING THE MACRO. 

# THE EXCEL WORKBOOK CAN BE OPEN WHEN RUNNING THE PROGRAM 


import os, sys 
#-------------------------------------------------------------------------- 
#PSSE_LOCATION = r"C:\Program Files (x86)\PTI\PSSE33\PSSBIN" #Locating PSSE 
#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 * # File Dialog 
import tkFileDialog 
import tkSimpleDialog 
import tkMessageBox 
import Tkinter as tk 



#Pop up window for picking file on PSSE 
#root = tk.Tk() 
#root.withdraw() 
#tkMessageBox.showinfo("Welcome", "Please select case: ") 
#root.fileName= tkFileDialog.askopenfilename(filetypes = (("PSSE CASES", "*.sav"), ("PSSE CASES", "*.raw*"))) 
#STUDY_CASE=root.fileName 



#psspy.psseinit(10000) # Intialize PSSE 
#psspy.case(STUDY_CASE) # Upload Case 


LOAD_GEN_DATAFILE = 'C:\Users\RM\Desktop\Data_2017.csv' # CSV File to Read 

# read the entire CSV into Python. 
# CSV has columns starting with Year,busnum,busname,scaled_power,tla,location,empty,year_link,from_,to,digit,min_value,max_value,last_bus 
#------------------------------------------------------------------------------- 
# read the entire CSV into Python. 
# CSV has columns starting with Year,busnum,busname,scaled_power,tla,location 
data = list(csv.reader(open(LOAD_GEN_DATAFILE))) 
mydict = {} 
for row in data: 
    Year,busnum,busname,scaled_power,tla,data_location,empty,year_link,from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[0:16] 


    #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 data_location not in busses_in_year: 
     busses_in_year[data_location] = [] 


    #Add the bus to the list of busses that stop at this location 
    busses_in_year[data_location].append((busnum,busname,scaled_power)) 
#------------------------------------------------------------------------------- 



#------------------------------------------------------------------------------------------------------------------------------------- 
#User Input Statement 

year = raw_input("Please Select Year of Study: ") 

print("\n") 

location=raw_input(" \n The list above show the TLA Pockets as well as the ID numbers assigned to them()\n\n Please enter the ID #: ") 
#psspy.prompt_output(islct = 6) 
print("\n") 
Year=year 
data_location=location 
#--------------------------------------------------------------------------------------------------------------------------------------- 

#-------------------------------------------------LOAD FORECASTS-------------------------------------------------------------------- 
if Year in mydict and data_location in mydict[Year]: 
    busses_in_year = mydict[Year] 
    #print("Here are all the busses at that location for that year and the new LOAD TOTAL: ") 
    #print("\n") 

    #Busnum, busname,scaled_power read from excel sheet matching year and location 

    for busnum,busname,scaled_power in busses_in_year[data_location]: 
     scaled_power= float(scaled_power) 
     busnum = int(busnum) 
     output='Bus #: {}\t Area Station: {}\t New Load Total: {} MW\t' 
     print(output.format(busnum,busname,scaled_power)) 
     #psspy.bsys(1,0,[0.0,0.0],0,[],1,[busnum],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],[scaled_power,0.0,0,-.0,0.0,-.0,0]) 


else: 
    exit 
#-------------------------------------------------LOAD FORECASTS-------------------------------------------------------------------- 

#------------------------------------------------VOLTAGE ENVLOPES--------------------------------------------------------------------------------------------------------------------------------- 

for row in data: 
    year_link, from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[7:16] 
    output = 'From Bus #: {}\tTo Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' 
    if year_link == year and tla_2==location: 
     from_=int(from_) 
     to=int(to) 
     min_value=float(min_value) 
     max_value=float(max_value) 
     digit=int(digit) 

     print(output.format(from_, to,name2, min_value, max_value)) 
     #_c=psspy.getdefaultchar() 
     #_i=psspy.getdefaultint() 
     #_f=psspy.getdefaultreal() 
     #psspy.two_winding_chng_4(from_,to,'%d'% digit,[_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f, max_value, min_value,_f,_f,_f],[]) 
    else: 
     exit 
for row in data: 
    year_link, from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[7:16] 
    if year_link==year and tla_2==location and isinstance(last_bus, int): 
     output = 'From Bus #: {}\tTo Bus #: {}\tLast Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' 
     print(output.format(from_, to,name2, min_value, max_value,last_bus)) 
     min_value=float(min_value) 
     max_value=float(max_value) 
     #psspy.three_wnd_winding_data_3(from_,to,last_bus,r"""1""",1,[_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f, max_value, min_value,_f,_f,_f]) 
    else: 
     exit 

    #------------------------------------------------VOLTAGE ENVLOPES----------------------------------------------------------------------------------------------------------------------------------   

os.remove(LOAD_GEN_DATAFILE) 
+0

Haben Sie die relevanten Zeilen in der Python repl versucht? – ivo

+0

nicht sicher, was das ist –

+1

Willkommen bei SO. Bitte geben Sie ein minimales Muster an, um den Fehler zu demonstrieren und teilen Sie uns mit, was Sie davon erwarten. – yacc

Antwort

1

csv.writer in der Lage, alle Daten zu schreiben (ganze Zahlen, Schwimmern, Saiten ...) zu einem csv. Aber csv.reader führt die umgekehrte Operation nicht aus.

last_bus ist eine Daten direkt aus csv.reader Iterator. So hat es , um eine Zeichenfolge zu sein.

So kann Ihre isinstance Methode True nicht zurückgeben.

Es gibt verschiedene Methoden, um zu überprüfen, ob eine Zeichenfolge tatsächlich eine ganze Zahl ist. Ich werde sie hier nicht erklären, wäre es mit einer Menge von bereits beantworteten Fragen überflüssig sein, aber überprüfen Sie dieses Q & A zu implementieren eine Ihrer Wahl (die Links zu anderem Q & Wie hat): How can I check if a string has a numeric value in it in Python?

Sobald Sie haben festgestellt, dass der String eine ganze Zahl hält, nur int(last_bus) in Ganzzahl zu konvertieren.

+0

, aber es ist keine Zeichenfolge. Es ist eine ganze Zahl. Warum möchte ich Daten schreiben? Ich versuche Daten zu lesen –

+1

es _is_ eine Zeichenfolge. Es hat nur einen Wert, der in eine ganze Zahl umgewandelt werden kann. –

+0

Also was mache ich dann, deklariere als Variable, wie würde ich das machen? –

0

Ok, also habe ich getan, was Sie gesagt haben. Es wird korrekt ausgegeben, aber es wird nicht in die psspy-Funktion ausgegeben.

for row in data: 
    year_link, from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[7:16] 
    if isinstance(last_bus, str) and year_link==year and tla_2==location and last_bus.isdigit() is True: 
     min_value=float(min_value) 
     max_value=float(max_value) 
     last_bus=int(last_bus) 
     output = 'From Bus #: {}\tTo Bus #: {}\tLast Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' 
     print(output.format(from_, to,last_bus,name2, min_value, max_value)) 
     print("\n") 
     psspy.three_wnd_winding_data_3(from_,to,last_bus=int(last_bus),r"""1""",1,[_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f, max_value, min_value,_f,_f,_f]) 
    else: 
     exit 
+0

@ Jean-François Fabre es immer noch sagt Ganzzahlfehler –