[Tutor] Python loop isn't working
Hello list! I have a python script which works with other libraries in order to create maps. The script looks for an extension in a specific directory and with mapnik makes the thumbnails. The module works fine from Python command line and Pyton IDLE, but I need this program to run from MS-DOS, when I added the try statement it started to fail. Module runs but doesn't do what I need. Console shows: C:\Python26shp2png.py C:\\ .png Iniciando... Listo What am I doing wrong? import mapnik import os,fnmatch, sys from mapnik import LineSymbolizer,PolygonSymbolizer,PointSymbolizer from osgeo import ogr,gdal,osr directorio = sys.argv[1] extension = sys.argv[2] try: if len(sys.argv) == 3: print 'Iniciando...' file_list = [] folders = None for root, folders, files in os.walk( directorio+'\\' ): for filename in fnmatch.filter(files, extension): file_list.append(os.path.join(root, filename)) for row, filepath in enumerate(file_list, start=1): dir(LineSymbolizer().stroke) shapeData = ogr.Open(filepath) shp = 'Error al abrir el archivo' +filepath if shapeData is None: print shp continue layer = shapeData.GetLayer() defn = layer.GetLayerDefn() geo = defn.GetGeomType() (ruta, filename) = os.path.split(filepath) archivo = os.path.splitext(filename) i = archivo[0]+'.png' m = mapnik.Map(800,500,+proj=latlong +datum=WGS84) m.background = mapnik.Color('#EBEBEB') s = mapnik.Style() r=mapnik.Rule() if geo == 3 or geo == -2147483645: print Trabajando mapa +ruta+\\+filename+ con geometria + str(geo) r.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('#EB784B'))) r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(170%,170%,170%)'),0.9)) s.rules.append(r) m.append_style('My Style',s) lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84) try: lyr.datasource = mapnik.Shapefile(base=ruta,file=archivo[0]) lyr.styles.append('My Style') m.layers.append(lyr) m.zoom_to_box(lyr.envelope()) mapnik.render_to_file(m,i, 'png') print La imagen +i+ fue creada. except RuntimeError, e: print 'Shapefile invalida' continue elif geo == 2 or geo == -2147483646: print Trabajando mapa +ruta+\\+filename+ con geometria + str(geo) r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('#EB784B'),0.9)) s.rules.append(r) m.append_style('My Style',s) lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84) try: lyr.datasource = mapnik.Shapefile(base=ruta,file=archivo[0]) lyr.styles.append('My Style') m.layers.append(lyr) m.zoom_to_box(lyr.envelope()) mapnik.render_to_file(m,i, 'png') print La imagen +i+ fue creada. except RuntimeError, e: print 'Shapefile invalida' continue elif geo == 1 or geo == -2147483647: print Trabajando mapa +ruta+\\+filename+ con geometria + str(geo) blue = mapnik.PointSymbolizer('C:\Python26\icono.png','png',50,50) blue.allow_overlap = True s=mapnik.Style() r=mapnik.Rule() r.symbols.append(blue) s.rules.append(r) m.append_style('My Style',s) lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84) try: lyr.datasource = mapnik.Shapefile(base=ruta,file=archivo[0]) lyr.styles.append('My Style') m.layers.append(lyr) m.zoom_to_box(lyr.envelope()) mapnik.render_to_file(m,i, 'png') print La imagen +i+ fue creada. except RuntimeError, e: print 'Shapefile invalida' continue else: print Algo fallo y no entro a ninguna de las geometrias print Listo else: print Tus argumentos no son correctos except IndexError: print Tus argumentos no son correctos ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Python loop isn't working
On 8/5/2011 9:14 AM Susana Iraiis Delgado Rodriguez said... Hello list! I have a python script which works with other libraries in order to create maps. The script looks for an extension in a specific directory and with mapnik makes the thumbnails. The module works fine from Python command line and Pyton IDLE, but I need this program to run from MS-DOS, when I added the try statement it started to fail. Module runs but doesn't do what I need. Console shows: C:\Python26shp2png.py C:\\ .png Iniciando... Listo What am I doing wrong? First, get rid of the encompassing try: except block so you can see any actual errors instead of trapping them. Place print statements at various points to test and confirm values. Read up on pdb.set_trace() to assist when prints don't quite help enough. Start your diagnostics from there and post the the actual traceback results when you get stuck. Emile import mapnik import os,fnmatch, sys from mapnik import LineSymbolizer,PolygonSymbolizer,PointSymbolizer from osgeo import ogr,gdal,osr directorio = sys.argv[1] extension = sys.argv[2] drop this... try: outdent this... if len(sys.argv) == 3: print 'Iniciando...' file_list = [] folders = None for root, folders, files in os.walk( directorio+'\\' ): for filename in fnmatch.filter(files, extension): file_list.append(os.path.join(root, filename)) throw a print statement here to confirm that file_list has valid contents (I suspect not) for row, filepath in enumerate(file_list, start=1): dir(LineSymbolizer().stroke) shapeData = ogr.Open(filepath) shp = 'Error al abrir el archivo' +filepath if shapeData is None: print shp continue layer = shapeData.GetLayer() defn = layer.GetLayerDefn() geo = defn.GetGeomType() (ruta, filename) = os.path.split(filepath) archivo = os.path.splitext(filename) i = archivo[0]+'.png' m = mapnik.Map(800,500,+proj=latlong +datum=WGS84) m.background = mapnik.Color('#EBEBEB') s = mapnik.Style() r=mapnik.Rule() if geo == 3 or geo == -2147483645: print Trabajando mapa +ruta+\\+filename+ con geometria + str(geo) r.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('#EB784B'))) r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(170%,170%,170%)'),0.9)) s.rules.append(r) m.append_style('My Style',s) lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84) try: lyr.datasource = mapnik.Shapefile(base=ruta,file=archivo[0]) lyr.styles.append('My Style') m.layers.append(lyr) m.zoom_to_box(lyr.envelope()) mapnik.render_to_file(m,i, 'png') print La imagen +i+ fue creada. except RuntimeError, e: print 'Shapefile invalida' continue elif geo == 2 or geo == -2147483646: print Trabajando mapa +ruta+\\+filename+ con geometria + str(geo) r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('#EB784B'),0.9)) s.rules.append(r) m.append_style('My Style',s) lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84) try: lyr.datasource = mapnik.Shapefile(base=ruta,file=archivo[0]) lyr.styles.append('My Style') m.layers.append(lyr) m.zoom_to_box(lyr.envelope()) mapnik.render_to_file(m,i, 'png') print La imagen +i+ fue creada. except RuntimeError, e: print 'Shapefile invalida' continue elif geo == 1 or geo == -2147483647: print Trabajando mapa +ruta+\\+filename+ con geometria + str(geo) blue = mapnik.PointSymbolizer('C:\Python26\icono.png','png',50,50) blue.allow_overlap = True s=mapnik.Style() r=mapnik.Rule() r.symbols.append(blue) s.rules.append(r) m.append_style('My Style',s) lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84) try: lyr.datasource = mapnik.Shapefile(base=ruta,file=archivo[0]) lyr.styles.append('My Style') m.layers.append(lyr) m.zoom_to_box(lyr.envelope()) mapnik.render_to_file(m,i, 'png') print La imagen +i+ fue creada. except RuntimeError, e: print 'Shapefile invalida'
Re: [Tutor] Python loop isn't working
On 05/08/11 17:14, Susana Iraiis Delgado Rodriguez wrote: The module works fine from Python command line and Pyton IDLE, but I need this program to run from MS-DOS, when I added the try statement it started to fail. Module runs but doesn't do what I need. Console shows: C:\Python26shp2png.py C:\\ .png Iniciando... Listo What am I doing wrong? What makes you think it doesn't work? The first pruint is near the start of your code, the last near the end. So your program appears to have run. What else were you expecting to see happen? What is different when you run it from Python command line? In practice there should be no difference between you typing C:\Python26shp2png.py C:\\ .png and typing C:\Python26 python shp2png.py C:\\ .png Or are you doing something at the Python prompt? If so what? How are you running it when it works? Alan G. ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor