यदि sleep.sh
शेबबैंग है #!/bin/sh
और उसके पास उपयुक्त फ़ाइल अनुमतियां हैं - chmod u+rx sleep.sh
तो सुनिश्चित करने के लिए चलाएं और यह $PATH
तब है जब आपका कोड काम करना चाहिए:
import subprocess
rc = subprocess.call("sleep.sh")
यदि स्क्रिप्ट PATH में नहीं है, तो इसे पूरा पथ निर्दिष्ट करें, उदाहरण के लिए, यदि यह वर्तमान कार्यशील निर्देशिका में है:
from subprocess import call
rc = call("./sleep.sh")
यदि स्क्रिप्ट में कोई शेबंग नहीं है, तो आपको निर्दिष्ट करने की आवश्यकता है shell=True
:
rc = call("./sleep.sh", shell=True)
यदि स्क्रिप्ट की कोई निष्पादन योग्य अनुमति नहीं है और आप उसे बदल नहीं सकते हैं, os.chmod('sleep.sh', 0o755)
तो चलकर आप स्क्रिप्ट को टेक्स्ट फ़ाइल के रूप में पढ़ सकते हैं और subprocess
इसके बजाय स्ट्रिंग को मॉड्यूल में पास कर सकते हैं :
with open('sleep.sh', 'rb') as file:
script = file.read()
rc = call(script, shell=True)