[GRASS-dev] [GRASS GIS] #2314: output r.out.xyz

GRASS GIS trac at osgeo.org
Mon Jun 2 22:33:25 PDT 2014


#2314: output r.out.xyz
-------------------------------------------------+--------------------------
 Reporter:  pvanbosgeo                           |       Owner:  grass-dev@…              
     Type:  defect                               |      Status:  new                      
 Priority:  normal                               |   Milestone:  7.0.0                    
Component:  Default                              |     Version:  svn-trunk                
 Keywords:  separator, pipe, r.out.xyz, r.stats  |    Platform:  MSWindows 7              
      Cpu:  All                                  |  
-------------------------------------------------+--------------------------

Comment(by glynn):

 Replying to [comment:30 hcho]:

 > Setting shell=False alone doesn't fix this problem. We still need
 {{{^^^|}}} (4 less carets).

 Why? The caret-escape mechanism is specific to cmd.exe, which is no longer
 used. The escaping needed to ensure that the command's "argv" array has
 the correct values is performed by the subprocess module (and doesn't
 involve carets).

 > Also, we lose useful cmd.exe commands (e.g., cd, dir, type, ...).

 A Python script shouldn't be executing such commands, but should be using
 Python's own functionality. In particular, executing a "cd" command in a
 child process is pointless, as its effect is limited to the child process
 itself.

 In any case r60679 removes all of the Popen() hackery from
 grass.script.core.py. grass.script.Popen() is now effectively an alias for
 subprocess.Popen().

 Execution of (e.g.) Python scripts from within Python scripts will require
 either specifying the interpreter explicitly, or the use of a batch file,
 or specifying shell=True (and providing any necessary quoting).

 Ultimately, it's impossible to quote correctly when shell=True, as it uses
 %COMSPEC% (if it's set) as the interpreter, and there's no guarantee that
 it will use exactly the same quoting rules as cmd.exe.

 Technically, similar issues apply when shell=False, as it's up to the
 executable to parse the command line into arguments. Fortunately, the
 parsing rules are now documented and widely followed.

-- 
Ticket URL: <http://trac.osgeo.org/grass/ticket/2314#comment:31>
GRASS GIS <http://grass.osgeo.org>



More information about the grass-dev mailing list