2010-05-29 18 views
6

के बिना शेल कमांड चलाना subprocess.call या subprocess.Popen के साथ, शेल कमांड निष्पादित करने से शेल विंडो त्वरित दिखाई देती है और गायब हो जाती है।शेल विंडो

मैं खोल विंडो के बिना खोल कमांड कैसे चला सकता हूं?

+1

क्या मंच? (विंडोज़ की तरह लगता है।) –

+0

संबंधित: [जब मैं os.system() या subprocess.call()?] (Http://stackoverflow.com/q/7006238/4279) – jfs

उत्तर

23

मुझे लगता है कि आपका अवलोकन विंडोज तक ही सीमित है, क्योंकि मेरा मानना ​​है कि, यह एकमात्र मंच है जिस पर आपको "कंसोल फ्लैश" समस्या मिल जाएगी।

startupinfo और creationflags, अगर दिया, अंतर्निहित CreateProcess() समारोह को दे दिया जाएगा: यदि हां, तो docs निम्नलिखित अर्द्ध उपयोगी पैरा प्रदान करते हैं। वे नई प्रक्रिया के लिए मुख्य विंडो की उपस्थिति और प्राथमिकता जैसी चीजें निर्दिष्ट कर सकते हैं। (विंडोज केवल)

दुर्भाग्य से अजगर ऑनलाइन डॉक्स Windows API डॉक्स के संबंधित भाग पुन: पेश नहीं करते हैं, ताकि आप उन कहीं और, उदाहरण के लिए पता लगाने के लिए है MSDN पर here शुरू करने creationflags के लिए आप here ओर जाता है जो, और विशेष रूप से करने के लिए

CREATE_NO_WINDOW 
0x08000000 

प्रक्रिया एक सांत्वना आवेदन कि एक सांत्वना खिड़की के बिना रन किया जा रहा है है। इसलिए, अनुप्रयोग के लिए कंसोल हैंडल सेट नहीं है।

तो, अपने Popen कॉल करने के लिए creationflags=0x08000000 जोड़ने की मदद करनी चाहिए (दुर्भाग्य से मुझे कोई विंडोज चलने वाली मशीन है जिस पर यह आज़माने के लिए, ताकि आप इसे अपने आप को कोशिश करनी होगी है)।

+0

का उपयोग करता हूं तो मैं कंसोल को कैसे छिपा सकता हूं त्वरित जवाब! –

+0

विंडोज मशीन पर सत्यापित किया गया। धन्यवाद! –

+0

बहुत अच्छा, यह काम करता है! – ChristopheD