isinstance不输出任何东西

使用isinstance时,我的代码不输出任何内容。 这在代码的最后显示。 我尝试inputyear 1tla_2=1 ,没有输出发生。 我的isinstance声明是错误的。 我是否循环不正确?

 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工作表

 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) 

csv.writer能够将任何数据(整数,浮点数,string…)写入csv 。 但csv.reader不执行反转操作。

last_bus是直接来自csv.reader迭代器的数据。 所以它必须是一个string。

所以,你的isinstance方法不能返回True

有几种方法来检查一个string是否实际上是一个整数。 我不会在这里解释他们,这将是很多已经回答的问题是多余的,但检查这个问答(有其他问答的链接)来实现你的select之一: 如何检查一个string是否有一个数值在Python中?

一旦你确定这个string持有一个整数,只需要int(last_bus)转换为整数。

好,所以我做了你所说的。 它输出正确,但不输出到psspy函数。

 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