दिलचस्प पोस्ट
मैं CUDA कर्नेल के लिए ग्रिड और ब्लॉक आयाम कैसे चुनूं? स्विंग में एक एनिमेटेड बीजी दिखाएं अजगर कैसे फ़ाइल को रिक्त या नहीं चेक करें एक स्ट्रिंग में पैटर्न की पहली घटना बदलें फाइल से एक ही फ़ाइल में इनपुट को वापस दोहराएं JQuery के साथ क्रॉस-डोमेन अजाक्स JSONP अनुरोध करें कैसे Activator.CreateInstance <T> () के लिए पैरामीटर पारित करने के लिए पायथन में फ़ंक्शन ओवरलोडिंग: लापता डेटाग्रिड टेम्पलेट कॉलम पाठ बॉक्स पाठ कैसे पहुंचें WPF C # कंसोल के बीच अंतर। पढ़ें () और कंसोल.रिडलाइन ()? CodeIgniter: "आप अपलोड करने का प्रयास कर रहे फ़ाइल प्रकार की अनुमति नहीं है।" JFormattedTextField ठीक से साफ नहीं है Asp.net MVC में डिफर्ड एक्ज़ीक्यूशन क्या एक बहुत बुरी चीज है? कैसे bitwise और 32 बिट से अधिक लंबे चर पर जावास्क्रिप्ट करने के लिए? यह निर्धारित करने के लिए कि क्या स्विफ्ट में एक जेनेरिक वैकल्पिक है?

नई टर्मिनल विंडो में अजगर से टर्मिनल कमांड निष्पादित करें?

यहाँ एक नया अजगर फ़ाइल एक मौजूदा शेल में और मौजूदा अजगर फ़ाइल से एक नए शेल में चलाने के लिए लक्ष्य है। कहो मेरे पास दो फाइल हैं, aaa.py और bbb.py। सादगी के लिए कहें कि सभी आआआप करता है …

subprocess.call('python bbb.py', shell=True) 

… और कहते हैं कि bbb.py करता है …

 print 'It worked' 

अब लक्ष्य को aaa.py टर्मिनल 1 पर चलाना है और इसे टर्मिनल 2 में bbb.py लॉन्च करना है। मैं नीचे दिए गए कमांड की तरह कुछ होने की उम्मीद करता हूं, लेकिन इसे समझ नहीं सकता।

 subprocess.call_in_new_window('python bb.py', shell=True) 

Solutions Collecting From Web of "नई टर्मिनल विंडो में अजगर से टर्मिनल कमांड निष्पादित करें?"

एक खोल से सामान्य रूप से ऐसा करने का कोई रास्ता नहीं है आपको क्या करना है टर्मिनल प्रोग्राम ही चलाया जाता है, या कुछ लांचर प्रोग्राम जो आपके लिए ऐसा करता है और ऐसा करने का तरीका प्रत्येक टर्मिनल कार्यक्रम के लिए अलग है।

कुछ मामलों में, os.startfile जो आप चाहते हैं वह करेंगे, लेकिन यह सार्वभौमिक नहीं होगा।

इसके अलावा, सामान्य रूप से ध्यान दें, आपको वास्तव में अपनी स्क्रिप्ट के लिए एक पूर्ण पथ की आवश्यकता होगी, क्योंकि नई टर्मिनल खिड़की एक नई शेल चलाई जाएगी और इसलिए जरूरी नहीं कि आपकी एक ही कार्यशील निर्देशिका होगी लेकिन मैं उन उदाहरणों के लिए उस पर ध्यान न दूंगा।


विंडोज सीएमडी के साथ, ऐसा करने का सबसे आसान तरीका start शेल कमांड है। अगर आपके द्वारा start की गई चीज किसी भी कमांड लाइन प्रोग्राम है, जिसमें python भी शामिल है, तो उसे एक नया सीएमडी विंडो मिलेगी। तो, कुछ ऐसा:

 subprocess.call('start /wait python bb.py', shell=True) 

ओएस एक्स के पास एक समान कमांड है, open । और यह एक शेल कमांड के बजाय एक वास्तविक कार्यक्रम है, इसलिए आपको shell=True आवश्यकता नहीं है। हालांकि, एक कमांड लाइन कार्यक्रम या open स्क्रिप्ट चलाना आम तौर पर एक नई टर्मिनल विंडो नहीं खोलता है। वास्तव में, इसका पूरा मुद्दा यह है कि आप प्रोग्राम को चलाने के लिए अनुमति दें, जैसे कि उन्हें खोजक में डबल क्लिक किया जा रहा है, जो कि टर्मिनल में कभी भी कुछ नहीं चलाता जब तक कि यह एक .command फ़ाइल नहीं है।

इसलिए, आप एक अस्थायी बना सकते हैं। .command फ़ाइल open और वह open ; कुछ इस तरह से (untested):

 with tempfile.NamedTemporaryFile(suffix='.command') as f: f.write('#!/bin/sh\npython bb.py\n') subprocess.call(['open', '-W', f.name]) 

वैकल्पिक रूप से, आप स्पष्ट रूप से Terminal.app का उपयोग करने के लिए open बता सकते हैं, ऐसा कुछ:

 subprocess.call(['open', '-W', '-a', 'Terminal.app', 'python', '--args', 'bb.py']) 

या आप AppleEvents के माध्यम से टर्मिनल.app को स्क्रिप्ट कर सकते हैं उदाहरण के लिए:

 appscript.app('Terminal').do_script('python bb.py') 

"स्क्रिप्ट" इवेंट एक नई विंडो खोलता है और एक कमान के रूप में अपनी तर्क चलाता है। यदि आप और अधिक विस्तृत नियंत्रण चाहते हैं, तो AppleScript संपादक में स्क्रिप्टिंग शब्दकोश खोलें और सभी मज़ेदार सामान देखें जो आप कर सकते हैं।


लिनक्स या अन्य * निक्स सिस्टम पर … ठीक है, वहाँ 65,102 विभिन्न डेस्कटॉप वातावरण, लांचर, और टर्मिनल कार्यक्रम हैं। क्या आपको उन सभी पर काम करने की आवश्यकता है?

गनोम-टर्मिनल के साथ, टर्मिनल को फिर से चलाने से आपको एक नई विंडो मिलती है, और -x आर्गुमेंट आपको प्रारंभिक कमांड निर्दिष्ट करने देता है, इसलिए:

 subprocess.call(['gnome-terminal', '-x', 'python bb.py']) 

बहुत से पुराने टर्मिनलों को xterm के साथ संगत करने की कोशिश की जाती है, जो -e साथ एक ही बात करता है:

 subprocess.call(['xterm', '-e', 'python bb.py']) subprocess.call(['rxvt', '-e', 'python bb.py']) 

… आदि।

आप कैसे जानते हैं कि उपयोगकर्ता किस टर्मिनल का उपयोग कर रहा है? अच्छा प्रश्न। जब तक आप किसी टर्मिनल की तरह दिख नहीं पाते तब तक आप खुद से मूल प्रक्रियाओं की तरह चल सकते थे या आप बस मान सकते हैं कि सभी के पास xterm या आप देख सकते हैं कि कैसे विभिन्न डिस्ट्रोस डिफ़ॉल्ट टर्मिनल को कॉन्फ़िगर करते हैं और उन सभी के लिए खोज करते हैं। या …

आप ऐसा नहीं कर पाएंगे, कम से कम उतना ही उतना ही नहीं जितना आप इसके बारे में सोच रहे हैं। मुझे संदेह है कि आप "टर्मिनल विंडो" के कारण मैक के बारे में बात कर रहे हैं।

आप इसे एक्स विंडो सिस्टम का उपयोग करने में सक्षम हो सकते हैं, लेकिन आपको ऐसा करने के लिए चीजों की एक गुच्छा की आवश्यकता होगी, एक्स-सर्वर, अनुमतियां आदि।

इन दिनों, ऐसी चीजें आमतौर पर सामान्य सुरक्षा सीमाओं का उल्लंघन करती हैं कहें कि आप प्रोग्राम को डाउनलोड करते हैं जो आपके सुझाव के अनुसार व्यवहार करता है यह एक खिड़की (टर्मिनल) (आपके लिए अदृश्य) लाती है जो आपके पास एक ही विशेषाधिकार है जो आपके पास है। यह आपके सभी निर्देशिकाओं और फाइलों को पढ़ने के लिए और उन्हें कार्यक्रम के प्रदाता के लिए जहाज करता है। आप उस से खुश नहीं हो सकते हैं पूरे समय, आपको लगता है कि आप एक गेम खेल रहे हैं, फिर आप बाहर निकलते हैं, और दूसरी शॉल चल रहा रहता है

विंडोज और गोले थोड़ा विच्छेद कर रहे हैं।