दिलचस्प पोस्ट
XCode 6.1 फ़ाइल में आवश्यक आर्किटेक्चर X86_64 अनुपलब्ध है । () बनाम। EntityFramework में लोड () प्रदर्शन ढेर पर एक नया सरणी बनाने के बिना जावा में एक सरणी के एक खंड को पकड़ो आरओआर 4 में मान्यताओं के साथ नियमित अभिव्यक्ति Google नक्शे जैसे स्थान संवाद सक्षम कैसे दिखाएं? $ गुंजाइश और $ रूट स्कोप के बीच अंतर स्थानीय विकास में फेसबुक का विकास ग्रन्ट घड़ी त्रुटि – प्रतीक्षारत … घातक त्रुटि: देखें ENOSPC HTML पृष्ठ पर सभी लिंक प्राप्त करें? मैं Django के GenericForeignKey को मॉडल की सूची में कैसे प्रतिबंधित कर सकता हूं? UIColor से आरजीबी मूल्यों को निकालें कंसोल में चलने वाले विंडोज पर एक जावा प्रोसेस के थ्रेड और हीप डंप कैसे प्राप्त करें क्या ए / आरम्भ / / / अंत / रेंज अभिव्यक्ति है जो कभी भी awk में उपयोगी है? आईओएस के साथ उपकरणों: क्यों मेमोरी मॉनीटर आवंटन के साथ असहमत है? एंड्रॉइड लाइब्रेरी में देशी कोड डीबग करें

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

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

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

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. 

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

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");