FAQ
Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.

My main Python script is started with the .pyw suffix, thus I got rid
of the main console and I just see my GUI.

So far I tried
os.system()

and subprocess.call()

with os.system() the command window pops up and I see my commands
output.

with the subprocess.call() and stdin ./ stdout / stderr redirection I
manage to get rid of stdout/stderr
( redirecting to the file 'NUL:' )

but the window stays.

the subprocess is a call to a .exe file with multiple parameters.

I would appreciate any hints

bye

Klaus

Search Discussions

•  at Oct 29, 2009 at 10:25 am ⇧

klausfpga schrieb:
Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.
You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
su = subprocess.STARTUPINFO()
su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
su.wShowWindow = subprocess.SW_HIDE
kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
r'd:\projekte\bar.py'), **kwargs )
•  at Oct 29, 2009 at 10:44 am ⇧

On Thu, Oct 29, 2009 at 3:25 AM, R?diger Ranft wrote:
klausfpga schrieb:
Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.
You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
? ?su = subprocess.STARTUPINFO()
? ?su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
? ?su.wShowWindow = subprocess.SW_HIDE
? ?kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
? ?r'd:\projekte\bar.py'), **kwargs )
Interestingly, none of that appears to be documented. I smell a docs
bug waiting to be reported.

Cheers,
Chris
•  at Oct 29, 2009 at 11:37 am ⇧

Chris Rebert wrote:
On Thu, Oct 29, 2009 at 3:25 AM, R?diger Ranft wrote:
klausfpga schrieb:
Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.
You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
su = subprocess.STARTUPINFO()
su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
su.wShowWindow = subprocess.SW_HIDE
kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
r'd:\projekte\bar.py'), **kwargs )
Interestingly, none of that appears to be documented.
Except for here:
http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx
I smell a docs bug waiting to be reported.

Cheers,
Chris
--
http://blog.rebertia.com
--
MPH
http://blog.dcuktec.com
'If consumed, best digested with added seasoning to own preference.'
•  at Oct 29, 2009 at 11:46 am ⇧

On Thu, Oct 29, 2009 at 4:37 AM, Martin P. Hellwig wrote:
Chris Rebert wrote:
On Thu, Oct 29, 2009 at 3:25 AM, R?diger Ranft wrote:

klausfpga schrieb:
Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.
You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
? su = subprocess.STARTUPINFO()
? su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
? su.wShowWindow = subprocess.SW_HIDE
? kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
? r'd:\projekte\bar.py'), **kwargs )
Interestingly, none of that appears to be documented.
Except for here:
http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx
I was referring to the following bits of the subprocess module used in
the above code:
subprocess.mswindows
subprocess.STARTUPINFO()
subprocess.STARTF_USESHOWWINDOW
subprocess.SW_HIDE

none of which are mentioned in the module's docs:
http://docs.python.org/dev/py3k/library/subprocess.html

Cheers,
Chris
•  at Oct 29, 2009 at 11:57 am ⇧
Chris Rebert wrote:
<cut>
I was referring to the following bits of the subprocess module used in
the above code:
Me too actually :-)
subprocess.mswindows
subprocess.STARTUPINFO()
subprocess.STARTF_USESHOWWINDOW
subprocess.SW_HIDE

none of which are mentioned in the module's docs:
http://docs.python.org/dev/py3k/library/subprocess.html
Since this is platform specific stuff I would argue that it has no
elsewhere would have been nice.

--
MPH
http://blog.dcuktec.com
'If consumed, best digested with added seasoning to own preference.'
•  at Oct 29, 2009 at 12:37 pm ⇧

On Thu, Oct 29, 2009 at 4:57 AM, Martin P. Hellwig wrote:
Chris Rebert wrote:
<cut>
I was referring to the following bits of the subprocess module used in
the above code:
Me too actually :-)
subprocess.mswindows
subprocess.STARTUPINFO()
subprocess.STARTF_USESHOWWINDOW
subprocess.SW_HIDE

none of which are mentioned in the module's docs:
http://docs.python.org/dev/py3k/library/subprocess.html
Since this is platform specific stuff I would argue that it has no business
being repeated, although a link to where it is documented elsewhere would
have been nice.
True, the Windows APIs are documented but it's not mentioned at all
that they're accessible in a certain form from subprocess.
Many other stdlib modules (e.g. os -
http://docs.python.org/library/os.html) include and list
platform-specific functions, I don't see why subprocess should be
different.

Cheers,
Chris
•  at Oct 29, 2009 at 11:54 pm ⇧

On Oct 29, 11:25?am, R?diger Ranft wrote:
klausfpga schrieb:
Hi,
I have a Python script which wants to start a subprocess and wait for
it to finish.
However I would like to have NO command window popping up during
execution.
You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
? ? su = subprocess.STARTUPINFO()
? ? su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
? ? su.wShowWindow = subprocess.SW_HIDE
? ? kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
? ? r'd:\projekte\bar.py'), **kwargs )
Thanks Ruediger,

I'll try that immediately tomorrow, when working again on a windows
host.

Good to know, that the Python API supports this.
though this feature was not that easy to be found in the doc.

This will make my application much nicer.
•  at Nov 4, 2009 at 8:30 am ⇧

klausfpga schrieb:
On Oct 29, 11:25 am, R?diger Ranft wrote:
Thanks Ruediger,

I'll try that immediately tomorrow, when working again on a windows
host.

Good to know, that the Python API supports this.
though this feature was not that easy to be found in the doc.
Well, getting the point from subproces.py was easy. Finding the
documentation about STARTUPINFO in the MSDN was not. I better stop here
before this post turns into a rant about Mircosofts use of javascript.

bye
Rudi

Related Discussions

Discussion Overview
 group python-list categories python posted Oct 29, '09 at 8:41a active Nov 4, '09 at 8:30a posts 9 users 4 website python.org

4 users in discussion

Content

People

Support

Translate

site design / logo © 2022 Grokbase