[Tutor] Run application from MS-DOS with sys.argv

Blockheads Oi Oi breamoreboy at yahoo.co.uk
Fri Apr 1 20:59:17 CEST 2011


On 01/04/2011 18:15, Susana Iraiis Delgado Rodriguez wrote:
> Hello!
>
> I'm going to answer to the question I posted in this list.
> After a search trouhg web and analize the code, I just had to add a
> try/except statement. Now I get what I need. Here is the information:
>
> directorio = sys.argv[1]
> extension = sys.argv[2]
> csv_salida = sys.argv[3]
> #Here I add the line:
> try:
>       if len(sys.argv) == 4:
>       ........................
>       ........................
> else:
>          print "Tus argumentos no son correctos"
> and here:
> except IndexError:
>      print "Tus argumentos no son correctos"
>

You appear to be mixing two ways of doing the same thing.  Either check 
the number of entries in sys.argv or catch the index error, don't do 
both.  Read this, it probably explains things better than I can 
http://mail.python.org/pipermail/python-list/2003-May/203039.html

>
> 2011/3/29 Susana Iraiis Delgado Rodriguez <susana.delgado_s at utzmg.edu.mx
> <mailto:susana.delgado_s at utzmg.edu.mx>>
>
>     Hello List:
>
>     I developed a script to walk through a specific directory in my PC
>     and look for files with the same extension (.shp). I want the user
>     to enter from MS-DOS and write the the directory, file extension and
>     csv filename.
>     My script reads the arguments from Windows console, but when I
>     opened the txt file and csv file I noticed that isn't walking
>     through all the root I wrote in MS-DOS. This is my module:
>
>     import os, csv, time, socket, sys
>     from osgeo import ogr,gdal,osr
>     #This should be the order for the arguments('csv_args.py [root]
>     [file_extension] [csv filename]')
>     #The user is typing python csv_args.py C:\ .shp csv.csv
>     directorio = sys.argv[1]
>     extension = sys.argv[2]
>     csv_salida = sys.argv[3]
>     if len(sys.argv) == 4:
>          print 'Iniciando...'
>          gdal.AllRegister()
>          file_list = []
>          folders = None
>          for root, folders, files in os.walk(directorio):
>              file_list.extend(os.path.join(root,fi) for fi in files if
>     fi.endswith(extension))
>          f = open(csv_salida, 'wb')
>          log = open ('errores.txt','w')
>          writer = csv.writer(f)
>          ruta = 'Ruta'
>          archivo = 'archivo'
>          x_min = 'x_min'
>          x_max = 'x_max'
>          y_min = 'y_min'
>          y_max = 'y_max'
>          geometria = 'geometria'
>          num_elem = 'num_elem'
>          prj = '.prj'
>          proyeccion = 'proyeccion'
>          fecha = 'fecha_modificacion'
>          maq = 'maquina_host'
>          usu = 'usuario'
>          campos =
>     [ruta,archivo,x_min,x_max,y_min,y_max,geometria,num_elem,prj,proyeccion,fecha,maq,usu]
>          writer.writerow(campos)
>          for row, filepath in enumerate(file_list, start=1):
>              (ruta, filename) = os.path.split(filepath)
>              shapeData = ogr.Open(filepath)
>              shp = 'Error al abrir el archivo' +filepath
>              if shapeData is None:
>                  print shp
>                  log.write(shp+"\n")
>              else:
>                  layer = shapeData.GetLayer()
>                  feature = layer.GetNextFeature()
>                  x_y = layer.GetExtent()
>                  x1 = x_y[0]
>                  x2 = x_y[1]
>                  y1 = x_y[2]
>                  y2 = x_y[3]
>                  defn = layer.GetLayerDefn()
>                  geo = defn.GetGeomType()
>                  cuenta = layer.GetFeatureCount()
>                  proy = layer.GetSpatialRef()
>                  prjtext = ''+str(proy)+''
>                  n = os.path.splitext(filepath)
>                  p = n[0]+'.prj'
>                  shx = n[0]+'.shx'
>                  dbf = n[0]+'.dbf'
>                  filepath = ''+filepath+''
>                  filename = ''+filename+''
>                  t = time.strftime("%m/%d/%Y %I:%M:%S
>     %p",time.localtime(os.path.getmtime(filepath)))
>                  modificacion = ''+t+''
>                  usuario = os.environ.get("USERNAME")
>                  user = ''+usuario+''
>                  host = socket.gethostname()
>                  maquina = ''+host+''
>                  if os.path.exists(shx):
>                      print 'El archivo ' +shx +' existe'
>                  else:
>                      og.write('No existe el archivo ' +shx+"\n")
>                  if os.path.exists(dbf):
>                      print 'El archivo ' +dbf +' existe'
>                  else:
>                      log.write('No existe el archivo ' +dbf+"\n")
>                  if os.path.exists(p):
>                      aRow= [ filepath, filename, x1, x2, y1, y2, geo,
>     cuenta, 1, prjtext, modificacion, maquina, user]
>                      writer.writerow(aRow)
>                  else:
>                      aRow1= [ filepath, filename, x1, x2, y1, y2, geo,
>     cuenta, 0, prjtext, modificacion, maquina, user]
>                      writer.writerow(aRow1)
>          log.close()
>          f.close()
>          print "El archivo esta listo"
>     else:
>          print "Tus argumentos no son correctos"
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor

Cheers.

Mark L.




More information about the Tutor mailing list