Command prompt not shown when running Python script with subprocess on Windows

Tim Golden mail at timgolden.me.uk
Thu May 29 07:41:02 EDT 2014


On 28/05/2014 21:46, ps16thypresenceisfullnessofjoy at gmail.com wrote:
> 
> Thank you for your replies. I tried what you suggested in your second
> post and it worked.
> 
> That was actually a mistake in the app_list.xml file. As you said:
> 
> <app name="LibreOffice Writer">%ProgramFiles%\LibreOffice
> 4\program\swriter.exe "C:\Users\Timothy\Documents\myfile.odt"</app>
> 
> should instead be:
> 
> <app name="LibreOffice Writer">"%ProgramFiles%\LibreOffice
> 4\program\swriter.exe" "C:\Users\Timothy\Documents\myfile.odt"</app>
> 
> I just made that file as a sample, and didn't actually test it.
> 
> My "shlex dance" has nothing to do with that, though. A few examples
> from the interactive interpreter should explain why I am doing it (I
> used raw strings in these examples so that I wouldn't need to escape
> the backslashes):
> 
>>>> import shlex 
>>>> shlex.split(r'C:\Users\Timothy\Documents\Python\myscript.py')
> ['C:UsersTimothyDocumentsPythonmyscript.py']
>>>> shlex.split(r'C:\\Users\\Timothy\\Documents\\Python\\myscript.py')
>
>>>> 
['C:\\Users\\Timothy\\Documents\\Python\\myscript.py']
>>>> shlex.split(r'C:\Users\Timothy\Documents\Python\myscript.py',
>>>> posix=False)
> ['C:\\Users\\Timothy\\Documents\\Python\\myscript.py']
> 
> The first example shows that single backslashes get removed. The
> second example shows that double backslashes are preserved intact.
> The third example shows that if posix=False, single backslashes are
> converted to double backslashes. None of these three behaviors are
> acceptable to correctly parse a Windows path, which is why I am doing
> what I am to work around the issue.

Well I certainly learnt something there! An additional test, which you
don't show is this:

>>> import shlex
>>> shlex.split(r'"c:\users\timothy\documents"')
['c:\\users\\timothy\\documents']
>>>

In other words, given the double-quoted data in your XML file, I think
it will do the right thing by Windows backslashes. YMMV, I suppose.

TJG



More information about the Python-list mailing list