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

  • Rüdiger Ranft 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 )
  • Chris Rebert 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
  • Martin P. Hellwig 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.'
  • Chris Rebert 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
  • Martin P. Hellwig 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
    business being repeated, although a link to where it is documented
    elsewhere would have been nice.

    --
    MPH
    http://blog.dcuktec.com
    'If consumed, best digested with added seasoning to own preference.'
  • Chris Rebert 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
  • Klausfpga 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.
  • Rüdiger Ranft 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 Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedOct 29, '09 at 8:41a
activeNov 4, '09 at 8:30a
posts9
users4
websitepython.org

People

Translate

site design / logo © 2022 Grokbase