[New-bugs-announce] [issue23862] subprocess popen arguments using double quotes

rengine report at bugs.python.org
Fri Apr 3 21:04:53 CEST 2015


New submission from rengine:

Using Python 2.7.9

Noticed when I run a subprocess Popen with an argument containing double quotes, it will have a different affect depending on my operating system. 

In Linux, if I run ./runme.py, it will call runme.sh which will append someargs.txt correctly without escaped quotations

In Windows, if I run ./runme.py, it will call runme.bat which will append someargs.txt with escaped quotations

Also in Windows, if I run runme.bat with an argument containing quotations it will append someargs.txt correctly without escaped quotations so this problem seems to be stemming from Python.

===================================== runme.py

#!/usr/bin/python
import sys
import subprocess
import shlex

# works on Linux:
#command_line = "./runme.sh --include=\"check\""

# fails on Windows:
command_line = "runme.bat --include=\"check\""
#command_line = "runme.bat --include=\"check\""

arg = shlex.shlex(command_line)
arg.quotes = '"'
arg.whitespace_split = True
arg.commenters = ''
command_line_args = list(arg)
print command_line_args

command_line_process = subprocess.Popen(
    command_line_args,
    universal_newlines=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE
)

line = ""
while True:
    line = command_line_process.stdout.readline()
    if line:
        print line
    else:
        break

===================================== runme.bat

echo %*
echo %* >> someargs.txt

===================================== runme.sh

#!/bin/bash
echo $@
echo $@ >> someargs.txt

----------
messages: 240026
nosy: rengine
priority: normal
severity: normal
status: open
title: subprocess popen arguments using double quotes
type: behavior
versions: Python 2.7

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue23862>
_______________________________________


More information about the New-bugs-announce mailing list