2012-04-12 11 views
7

मैं पायथन के विंडोज संस्करण का उपयोग करता हूं। मेरे पास पाइसाइड का उपयोग कर पाइथन लिपि है (कुछ भी जटिल नहीं है, एक तरह का "हैलो वर्ल्ड")।क्या हम जानते हैं कि विंडोज़ या टेक्स्ट टर्मिनल से पाइथन लिपि लॉन्च की गई है या नहीं?

जब मैं अपनी स्क्रिप्ट फ़ाइल पर क्लिक करता हूं या यदि मैं इसे कमांड लाइन से लॉन्च करता हूं, तो यह पूरी तरह से निष्पादित होता है और मेरे पास एक GUI दिखाई देता है।

हालांकि, यदि मैं एक पाठ टर्मिनल (cmd.exe, cygwin, ...) से स्क्रिप्ट लॉन्च किया गया है, तो मैं एक जीयूआई होने से बचना चाहता हूं। एक प्रकार की स्क्रिप्ट जो स्वचालित रूप से जानता है कि क्या उसके पास GUI आउटपुट या टेक्स्ट आउटपुट होना चाहिए।

क्या ऐसा करने का कोई आसान और आसान तरीका है? मैं पाइथन (के विंडोज संस्करण के साथ ऐसा करने में सक्षम होना चाहता हूं जो सिगविन पैकेज के साथ नहीं आ रहा है)।

जब मैं एक पाठ टर्मिनल से स्क्रिप्ट लॉन्च करता हूं तो एक स्पष्ट तरीका "--no-gui" पैरामीटर जोड़ना होगा, लेकिन मुझे आश्चर्य है कि क्या पाइथन (या कुछ पायथन पुस्तकालय) पहले से ही इसके लिए टूल प्रदान करते हैं।

इसके अलावा मेरे पास इस कंप्यूटर पर एक एसएसएच सर्वर (सिग्विन-बेस) है, मैं दूरी पर स्क्रिप्ट निष्पादित कर सकता हूं लेकिन कोई GUI दिखाई नहीं दे रहा है (मुझे) और मुझे कोई त्रुटि संदेश नहीं है। यह एक ऐसा मामला है जहां यह जानना बहुत दिलचस्प है कि विंडोज ग्राफिकल समर्थन की कमी के कारण स्क्रिप्ट विफल रही है या यदि स्क्रिप्ट को टेक्स्ट टर्मिनल के लिए अपना आउटपुट अनुकूलित करना चाहिए।

+2

नहीं इसकी कोई डुप्लिकेट के बाद से यह सवाल विंडोज के बारे में है, लेकिन चर्चा http://stackoverflow.com/questions/3818511/how-to-tell-if-python-script-is-being-run पर -इन-ए-टर्मिनल-या-थ्रू-गुई सहायक हो सकता है। –

+1

और चर्चा यहां भी है: http://stackoverflow.com/questions/1285024/how-can-i-check-to-see-if-a-python-script-was-started-interactively – Jiri

उत्तर

1

मुझे पता है कि आप फ़ाइल को .py फ़ाइल या .pyw फ़ाइल के रूप में चला सकते हैं। दूसरा विकल्प जीयूआई अनुप्रयोगों के लिए प्रयोग किया जाता है और यह कंसोल विंडो नहीं खोलता है। इन्हें दो मामलों में अंतर करने के लिए आप sys.stdout की विधि देख सकते हैं।

import sys 
if sys.stdout.isatty(): 
    # .py file is running, with console window 
    pass 
else: 
    # .pyw file is running, no console 
    pass 

संपादित:

  • मुझे लगता है कि चलाने के लिए पोटीन + linux बॉक्स पर ssh के साथ करने की कोशिश की है - यह सच है देता है।
  • मैं खिड़कियों बॉक्स पर msys बैश खोल का उपयोग करने की कोशिश की है - यह रिटर्न यह सच है (.py फ़ाइल)
  • मैं cygwin अजगर के साथ cygwin बैश खोल का उपयोग करने की कोशिश की है - यह सच है रिटर्न
  • दुर्भाग्य से (.py फ़ाइल), मुझे पट्टी + विंडोज साइगविन एसएसएच सर्वर का प्रयास करने की कोई संभावना नहीं है।
+0

आप ' बिना कंसोल के चलाने के लिए pythonw.exe'। – bereal

+0

दिलचस्प है, लेकिन सभी मामलों में काम नहीं करता है। Cmd.exe से और फ़ाइल पर क्लिक करते समय, isatty() एक .pyw के लिए एक .py और गलत के लिए सच है, इसलिए आपका विचार अच्छी तरह से काम करता है। सिग्विन और एक एसएसएच सत्र (पुटी और एसएसएच के लिए एसएसएच) से, इसाटी() गलत है (याद दिलाने के लिए, मैं पाइथन के विंडोज संस्करण का उपयोग करता हूं, सिगविन एक नहीं)। या मुझे कुछ याद आती है? –

+0

मुझे वास्तव में खेद है, लेकिन मैंने एक बार फिर परीक्षण किया, और आपके संपादन के विपरीत क्या है, यह सिग्विन बैश खोल के साथ काम नहीं करता है। आपने किस पायथन संस्करण का उपयोग किया था? मैं विशेष रूप से पाइथन के विंडोज संस्करण के बारे में बात कर रहा हूं, सिगविन पैकेज के साथ आने वाला नहीं (मुझे लगता है कि यह इसके लिए सच है, लेकिन विचार विंडोज के लिए पायथन का उपयोग करना है)। –