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
|