दिलचस्प पोस्ट
एंड्रॉइड में स्टेटस बार का रंग कैसे बदल सकता है लॉगिन विफल होने के बाद पुनर्निर्देशित करें एंड्रॉइड कस्टम कीबोर्ड बनाने के लिए कैसे? लिनक्स बाइनरी इंस्टॉलर (.बीन, .एस) कैसे काम करते हैं? आइकन आइकन आइकन केवल एक आइकन बनाता है डायरेक्ट सीस्ट, सीटीइप, ट्रायकास्ट के साथ डेटाटाइप कास्टिंग करना क्या एक पृष्ठभूमि छवि Winforms Textbox पर सेट की जा सकती है? जावास्क्रिप्ट: वस्तु का नाम बदलें कुंजी सर्वश्रेष्ठ JSON-LD प्रथाएं: एकाधिक <स्क्रिप्ट> तत्वों का उपयोग कर रहे हैं? Tf.nn.conv2d क्या tensorflow में क्या करता है? किसी भी कुंजी को दबाए जाने से पहले क्यों मिलता है () मिलता है? MySQL में डेलिमिटर Android में नाम से ड्रॉएबल संसाधनों का उपयोग कैसे करें पेज का निर्धारण गिटूब पृष्ठों पर पुराना है अक्षम फॉर्म इनपुट अनुरोध में प्रकट नहीं होते हैं

मैं अजगर से प्रोग्राम कैसे निष्पादित करूं? ओएससिस्टम पथ में रिक्त स्थान के कारण विफल रहता है

मेरे पास एक अजगर स्क्रिप्ट है, जिसे बाहरी प्रोग्राम निष्पादित करने की आवश्यकता है, लेकिन किसी कारण से विफल हो जाता है।

अगर मेरे पास निम्न स्क्रिप्ट है:

import os; os.system("C:\\Temp\\abc\\Notepad.exe"); raw_input(); 

तो यह निम्न त्रुटि के साथ विफल रहता है:

 'C:\Temp\a' is not recognized as an internal or external command, operable program or batch file. 

अगर मैं इस उद्धरण के साथ कार्यक्रम से बचता हूं:

 import os; os.system('"C:\\Temp\\abc\\Notepad.exe"'); raw_input(); 

तो यह काम करता है हालांकि, अगर मैं एक पैरामीटर जोड़ता हूं, तो वह फिर से काम करना बंद कर देता है:

 import os; os.system('"C:\\Temp\\abc\\Notepad.exe" "C:\\test.txt"'); raw_input(); 

प्रोग्राम निष्पादित करने और इसे पूरा करने के लिए इंतजार करने का सही तरीका क्या है? मुझे इसके उत्पादन से पढ़ने की ज़रूरत नहीं है, क्योंकि यह दृश्य प्रोग्राम है जो नौकरी करता है और फिर बस निकल जाता है, लेकिन मुझे इसे पूरा करने के लिए इंतजार करना होगा।

यह भी ध्यान रखें, प्रोग्राम को एक गैर-स्पेस पथ में स्थानांतरित करना एक विकल्प नहीं है


संपादित करें यह या तो काम नहीं करता है:

 import os; os.system("'C:\\Temp\\abc\\Notepad.exe'"); raw_input(); 

स्वैप किए गए एकल / डबल उद्धरणों को नोट करें

यहां नोटपैड के साथ या बिना पैरामीटर, यह त्रुटि संदेश के साथ विफल रहता है

 The filename, directory name, or volume label syntax is incorrect. 

Solutions Collecting From Web of "मैं अजगर से प्रोग्राम कैसे निष्पादित करूं? ओएससिस्टम पथ में रिक्त स्थान के कारण विफल रहता है"

subprocess.call विभिन्न गोलों के सम्मेलनों के उद्धरण से निपटने के लिए समस्याओं से subprocess.call । यह स्ट्रिंग के बजाय एक सूची को स्वीकार करता है, इसलिए तर्कों को अधिक आसानी से सीमांकित किया जाता है। अर्थात

 import subprocess subprocess.call(['C:\\Temp\\abc\\Notepad.exe', 'C:\\test.txt']) 

यह करने का एक अलग तरीका यह है

अगर आप एक्सप्लोरर में फ़ाइल को डबल-क्लिक करने या डॉस "स्टार्ट" कमांड के लिए तर्क के रूप में फ़ाइल नाम देने की तरह निम्नलिखित कार्य करता है: फ़ाइल को जो भी आवेदन (यदि कोई हो) के साथ खोला गया है, तो उसका एक्सटेंशन जुड़ा हुआ है

 filepath = 'textfile.txt' import os os.startfile(filepath) 

उदाहरण:

 import os os.startfile('textfile.txt') 

नोटपैड के साथ textfile.txt खुल जाएगा अगर नोटपैड .txt फाइलों के साथ आश्वस्त किया जाता है।

सबसे बाहरी उद्धरण पायथन द्वारा ही खाया जाता है, और विंडोज़ शेल इसे नहीं देखता है। जैसा कि ऊपर उल्लेखित है, विंडोज केवल डबल कोट्स को समझता है। अजगर विंडोज पर बैकस्लैश पर फॉरवर्ड-कलेश करेगा, ताकि आप उपयोग कर सकें

 os.system('"C://Temp/abc/Notepad.exe"') 

'पायथन द्वारा उपभोग किया जाता है, जो बाद में' सी: // टेम्प / बैक / नोटपैड.एक्सए '(एक विंडोज़ पथ के रूप में, कोई डबल बैकस्लैश आवश्यक नहीं है) सीएमडी.एक्सईई के पास जाता है

कम से कम विंडोज 7 और पायथन 3.1 में, os.system में os.system कमांड लाइन को डबल-उद्धृत करना चाहता है यदि कमांड के रास्ते में रिक्त स्थान हैं। उदाहरण के लिए:

  TheCommand = '\"\"C:\\Temp\\abc\\Notepad.exe\"\"' os.system(TheCommand) 

एक वास्तविक दुनिया का उदाहरण है जो मुझे स्टंपिंग कर रहा था, VirtualBox में एक ड्राइव क्लोनिंग कर रहा था। ऊपर subprocess.call समाधान कुछ एक्सेस राइट इश्यू के कारण काम नहीं करता, लेकिन जब मैं कमांड को os.system , os.system खुश हो गया:

  TheCommand = '\"\"C:\\Program Files\\Sun\\VirtualBox\\VBoxManage.exe\" ' \ + ' clonehd \"' + OrigFile + '\" \"' + NewFile + '\"\"' os.system(TheCommand) 
 import win32api # if active state python is installed or install pywin32 package seperately try: win32api.WinExec('NOTEPAD.exe') # Works seamlessly except: pass 

मुझे संदेह है कि यह समान समस्या है जब आप Windows में शॉर्टकट का उपयोग करते हैं … यह प्रयास करें:

 import os; os.system("\"C:\\Temp\\abc\\Notepad.exe\" C:\\test.txt");