geologyidea.com
Viac

Čo spôsobuje ValueError: I/O operáciu v uzavretom súbore?

Čo spôsobuje ValueError: I/O operáciu v uzavretom súbore?


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


Zobrazí sa nasledujúce chybové hlásenie:

ValueError: I/O operácia na uzavretom súbore

Tu je môj kód (vyberie každý polygón obsiahnutý v súbore tvarov „selected_polygons.shp“ a vytvorí cestu najlacnejších nákladov medzi predtým vybraným mnohouholníkom a každým mnohouholníkom obsiahnutým v tom istom súbore tvarov.)

import arcpy from arcpy import env from arcpy.sa import * arcpy.CheckOutExtension ("Spatial") arcpy.env.overwriteOutput = True arcpy.env.workspace = "C:  Users  LCP" arcpy.env.extent = "náklady. tif "s arcpy.da.SearchCursor (" selected_polygons.shp ", ("*")) as rowsInPatches_start: for rowStart in rowsInPatches_start: ID_patch_start = int (rowStart [3]) ## Define SQL expression for the font Select Layer By Attribute expressionForSelectInPatches_start = "GRIDCODE = % s" % (ID_patch_start) ## Proces: Vyberte vrstvu podľa atribútu arcpy.MakeFeatureLayer_management ("selected_polygons.shp", "Selected_patch_start", expressionForSelectInPatches_start " # "nákladyn.tif", "", "outCostLink.tif") ## Uložte výstup outCostDist.save ("outCostDist.tif") pomocou arcpy.da.SearchCursor ("selected_polygons.shp", ("*")) ako rowInSelectedPatches_end: for rowEnd in rowsInSelectedPatches_end: ID_patch_end = int (rowEnd [3]) ## Define SQL expression for th e fonction Select Layer By Attribute expressionForSelectInPatches_end = "GRIDCODE = % s" % (ID_patch_end) ## Process: Select Layer by Attribute in Patches_end arcpy.MakeFeatureLayer_management ("selected_polygons.shp", "Selected_patch_end", expressionFor outCostPath = CostPath ("Selected_patch_end", "outCostDist.tif", "outCostLink.tif", "EACH_ZONE", "FID") ## Uložte výstup outCostPath.save ('P_' + str (int (ID_patch_start)) + ' _ ' + str (int (ID_patch_end)) + ".tif") ## Zapíšte do súboru .txt outfile = otvorený (' P_ ' + str (int (ID_patch_start)) +' _ ' + str (int (ID_patch_end) ) + ".txt", "w") rowsTxt = arcpy.SearchCursor ('P_' + str (int (ID_patch_start)) + '_' + str (int (ID_patch_end)) + ".tif") pre rowTxt v rowTxt : value = rowTxt.getValue ("Value") count = rowTxt.getValue ("Count") pathcost = rowTxt.getValue ("PATHCOST") startrow = rowTxt.getValue ("STARTROW") startcol = rowTxt.getValue ("STARTCOL" ) tlačená hodnota, počet, cesta, počiatočný riadok, počiatočný výstupný súbor.write (str (hodnota) + "" + str (počet) + "" + str (pathcost) + "" + str (startrow) + "" + str (startcol) + " n") outfile.close ()

Dôvod, prečo sa vám zobrazuje táto konkrétna chyba, je ten, že svoj súbor zatvoríte po prvej iterácii v nasledujúcej slučke:

pre rowTxt v rowsTxt: hodnota = rowTxt.getValue („hodnota“) počet = rowTxt.getValue („počet“) pathcost = rowTxt.getValue („PATHCOST“) startrow = rowTxt.getValue („STARTROW“) startcol = rowTxt.getValue ("STARTCOL") tlačová hodnota, počet, cesta, počiatočný riadok, počiatočný výstupný súbor.write (str (hodnota) + "" + str (počet) + "" + str (pathcost) + "" + str (začiatočný) + "" + str (startcol) + " n") outfile.close ()

Pri ďalšej iterácii voláte metódu zápisu do súboru, ktorý ste práve zatvorili. Svoj príkaz outfile.close () musíte presunúť mimo túto slučku:

pre rowTxt v rowsTxt: hodnota = rowTxt.getValue („hodnota“) počet = rowTxt.getValue („počet“) pathcost = rowTxt.getValue („PATHCOST“) startrow = rowTxt.getValue („STARTROW“) startcol = rowTxt.getValue ("STARTCOL") tlačová hodnota, počet, cesta, počiatočný riadok, počiatočný výstupný súbor.write (str (hodnota) + "" + str (počet) + "" + str (pathcost) + "" + str (začiatočný) + "" + str (startcol) + " n") outfile.close ()

Odsadenie je nesprávne pre prvú slučku for, skúste toto:

import arcpy from arcpy import env from arcpy.sa import * arcpy.CheckOutExtension ("Spatial") arcpy.env.overwriteOutput = True arcpy.env.workspace = r "C:  Users  LCP" arcpy.env.extent = "náklady .tif "s arcpy.da.SearchCursor (" selected_polygons.shp ", ("*")) ako rowInPatches_start: pre rowStart v rowInPatches_start: