मुझे कमांड प्रॉम्प्ट में कमांड चलाने की आवश्यकता है लेकिन वे केवल तभी काम करते हैं जब कमांड प्रॉम्प्ट सिस्टम में किसी विशेष स्थान पर सेट हो। मुझे एक पायथन लिपि में चलाने के लिए निम्न आदेशों की आवश्यकता है:

import os
os.system("set OMP_NUM_THREADS=2")
os.system("explorer.exe /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"@
os.system("cd C:\CFD\crit_vel_01_02")
os.system("mpiexec  -n  9 FDS  crit_vel_01_02.fds")
os.system("PAUSE") 

सिस्टम कमांड को नहीं पहचानता

os.system("mpiexec  -n  9 FDS  crit_vel_01_02.fds")

जब तक यह कमांड शेल में नहीं चलाया जाता है जो प्रोग्राम "fds" की स्थापना पर स्थापित होता है जो एक फायर डायनेमिक्स सिम्युलेटर है। मैं सराहना करता हूं कि यह कार्यक्रम के लिए काफी विशिष्ट लगता है लेकिन मुझे लगता है कि कुछ सामान्य तरीका है कि पाइथन एक अलग स्थान से/विभिन्न सेटिंग्स के साथ कमांड खोल चला सकता है।

कमांड प्रॉम्प्ट के शॉर्टकट को CMDfds कहा जाता है और इसमें स्थापित किया जाता है:

"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\FDS6"

गुणों में शॉर्टकट टैब में लक्ष्य है:

"सी: \ विंडोज \ System32 \ cmd.exe / k fdsinit"

0
James 10 अप्रैल 2020, 14:01

2 जवाब

सुनिश्चित नहीं है कि यह काम करेगा लेकिन आप subprocess.run< पर कोशिश कर सकते हैं। /a> shell=True के साथ।

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

Fds कमांड शेल से अजगर स्क्रिप्ट को चलाने का भी प्रयास करें। ऐसा लगता है कि खोल में सामान शुरू हो रहा है।

0
Dionys 10 अप्रैल 2020, 14:09
क्षमा करें, मुझे यह समझ में नहीं आ रहा है, मैं इस subprocess.run को पायथन लिपि में कैसे शामिल करूं?
 – 
James
10 अप्रैल 2020, 15:37
; os.system कॉल के स्थान पर।
 – 
Dionys
10 अप्रैल 2020, 16:02

सिस्टम कमांड के साथ प्रोग्राम चलाने में समस्या यह है कि उनके पास अक्सर एक अलग शेल वातावरण होता है। इससे उत्पन्न होने वाली समस्याओं को रोकने के लिए पूर्ण पथ का उपयोग करना एक अच्छा विचार है। आपके मामले में:

os.system("mpiexec  -n  9 FDS  crit_vel_01_02.fds")

में बदला जाना चाहिए:

os.system("/absolute/path/to/mpiexec  -n  9 FDS  crit_vel_01_02.fds")
0
Hayden Eastwood 10 अप्रैल 2020, 14:10
धन्यवाद, मैंने "C:\Program Files\firemodels\FDS6\bin\mpi\mpiexec.exe -n 9 FDS crit_vel_01_02.fds" चलाने की कोशिश की, हालांकि यह कुछ भी नहीं चल रहा है, बस कमांड पर अटक जाता है जैसे कि यह प्रसंस्करण कर रहा है . मैंने सीडी "सी: \ प्रोग्राम फ़ाइलें \ फायरमोडेल \ एफडीएस 6 \ बिन \ एमपीआई \ mpiexec -n 9 "सी: \ प्रोग्राम फ़ाइलें \ फायरमॉडल \ एफडीएस 6 \ बिन \ fds.exe" चलाने के लिए वैकल्पिक रूप से प्रयास किया ... "सी: \ सीएफडी \crit_vel_01_02\crit_vel_01_02.fds" लेकिन उसी परिणाम के साथ?
 – 
James
10 अप्रैल 2020, 15:30
जब आप कमांड लाइन में "C:\Program Files\firemodels\FDS6\bin\mpi\ mpiexec -n 9 9 FDS crit_vel_01_02.fds" चलाते हैं, तो क्या आपको त्रुटियां मिलती हैं? आप "सीडी" क्यों चला रहे हैं?
 – 
Hayden Eastwood
10 अप्रैल 2020, 16:49
यदि यह प्रतीत होता है कि अटक जाता है, तो आप कैसे जानते हैं कि कार्यक्रम अपने स्टैंडअलोन रूप में ठीक से काम कर रहा है? क्या आप जांच सकते हैं कि आपकी मशीन पर कौन सी प्रक्रियाएं चल रही हैं, यह समस्या निवारण करने के लिए कि क्या यह क्रैश हो गया है, या कुछ कैसे लटका हुआ है?
 – 
Hayden Eastwood
10 अप्रैल 2020, 16:51