Besides, If I print the query, I have the next output: C:/Archivos de programa/FWTools2.4.7/bin/ogr2ogr U3B-BARDA
.shp -where "LAYER='U3B-BARDA '" tapalpa_05_plani_line.shp C:/Archivos de programa/FWTools2.4.7/bin/ogr2ogr N2H-TEMP .shp -where "LAYER='N2H-TEMP '" tapalpa_05_plani_line.shp C:/Archivos de programa/FWTools2.4.7/bin/ogr2ogr U3C-CERCA .shp -where "LAYER='U3C-CERCA '" tapalpa_05_plani_line.shp.......... I thought it was a console print issue, but when I run the module from Eclipse, it shows the same enter space, so I think it maybe that the line is not together as it is a statement!! 2010/10/8 Susana Iraiis Delgado Rodriguez <susana.delgad...@utzmg.edu.mx> > Hi Alan: > > The ouput is coming from a cicle and some functions that I vae to do to > execute an ogr2ogr command, in this output I ask the user for the name of a > file and then make a module to get to the subprocess part: > > import shlex, subprocess, sys > from dbf import * > def process(): > #Read dbfile status 100% > a = open ("capas.txt","w+") > print 'Enter the shapefile name' > b = raw_input() > print '\n' > dbf = Dbf(b+".dbf",new=False) > > for rec in dbf: > for fldName in dbf.fieldNames: > if fldName == 'LAYER': > l=() > l=rec[fldName] > a.write(l) > a.write("\n") > a.close() > > ##Eliminate duplicate lines from the txt into a new txt, status:100% > a = open ("capas.txt","r") > catalogo = open ("unico.txt","w") > unique = set(a.read().split("\n")) > catalogo.write("".join([line + "\n" for line in unique])) > catalogo.close() > a.close() > > ##Execute ogr2ogr command, status:75% > for line in open("unico.txt", "r"): > > p = subprocess.Popen(['C:/Archivos de > programa/FWTools2.4.7/bin/ogr2ogr', line+'.shp', '-where', > "\"LAYER='"+line+"'\"" , b+'.shp']) > > But when I executed it shows me an error in the layer's name: > > >>> ERROR 1: Failed to identify field:LAYER= > ERROR 1: Failed to create file .shp file. > ERROR 4: Failed to open Shapefile `0 > .shp'. > > I think the erros showed up because some of the layer's values are 0 and ' > ', and obsviously you can't create a file from nothing on it. But I don`t > know how to validate if a layer's value is equals to 0 or ' ', any idea what > I'm doing wrong or how to fix it? > > > 2010/10/7 Susana Iraiis Delgado Rodriguez <susana.delgad...@utzmg.edu.mx> > > Hello taserian and Antonio! >> >> Thank you both for taking the time to answer my question. With taserian's >> code it gives me the next output: >> C... ogr2ogr T21-PUENTESshp -where "LAYER=T21-PUENTES" >> tapalpa_05_plani_line.shp >> but the output I need is: >> C... ogr2ogr T21-PUENTESshp -where "LAYER=' T21-PUENTES' " >> tapalpa_05_plani_line.shp >> >> I did the Antonio's suggested corrections, and I got the string I wanted, >> now the problem is that my subprocess doesn't work properly, I'll give a >> look and see whats wrong with it. >> >> >> 2010/10/7 taserian <taser...@gmail.com> >> >> On Thu, Oct 7, 2010 at 12:48 PM, taserian <taser...@gmail.com> wrote: >>> >>>> I'm adding some line breaks to make your text a little more readable. >>>> >>>> On Thu, Oct 7, 2010 at 9:55 AM, Susana Iraiis Delgado Rodriguez < >>>> susana.delgad...@utzmg.edu.mx> wrote: >>>> >>>> Hello members: >>>>> >>>>> How can I write a statement to execute the following: >>>>> >>>> >>>> >>>>> C:/Archivos de programa/FWTools2.4.7/bin/ogr2ogr R1G-GEODESIA.shp >>>>> -where "LAYER = 'R1G-GEODESIA'" tapalpa_05_plani_point.dbf >>>>> >>>> >>>> >>>>> I want my uotput to look like this. >>>>> Instead I'm getting this >>>>> >>>> >>>> >>>>> C:/Archivos de programa/FWTools2.4.7/bin/ogr2ogr T21-PUENTES.shp -where >>>>> LAYER=+line tapalpa_05_plani_line.shp >>>>> >>>> >>>> >>>>> In miy code line is a string given by the user: >>>>> >>>>> for line in open("unico.txt", "r").readlines(): >>>>> p = subprocess.Popen(['C:/Archivos de >>>>> programa/FWTools2.4.7/bin/ogr2ogr', line+'.shp', '-where', "LAYER='line'", >>>>> b+'.shp']) >>>>> >>>>> Any suggestions? >>>>> >>>> >>>> Without knowing specifics about what the subprocess.Popen function is >>>> expecting as parameters, I can only speculate, but it seems that the >>>> following *might* work (for extremely generous values of "*might*"): >>>> >>>> for line in open("unico.txt", "r").readlines(): >>>> p = subprocess.Popen(['C:/Archivos de >>>> programa/FWTools2.4.7/bin/ogr2ogr', line+'.shp', '-where', "\"LAYER='" + >>>> line + "'\"", b+'.shp']) >>>> >>>> Details about where the changes are: >>>> "\"LAYER='" + line + "'\"" >>>> >>> >>> Begin corrections (corrections start with a *) >>> >>> Quote to begin the literal: " >>>> An escaped quote (1) so that there's a quote inside the literal: \" >>>> Some of the text that's meant to be unchanging: LAYER= >>>> >>> *Single Quote (2) to be included in the literal (which doesn't need to be >>> escaped): ' >>> >>>> Close Quote: " >>>> >>> Add the content of the variable "line" from the unico.txt file: + line >>>> + >>>> >>> *Add another literal, composed of the single quote that closes (2) above, >>> then the closing escaped quote to close (1) : "'\"" >>> >>> >>>> >>>> See if this works, and let us know how it turns out. >>>> >>>> Antonio Rodriguez >>>> >>> >>> End of corrections. >>> >>> Antonio Rodriguez >>> >> >> >
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor