2017-08-16 2 views
1

erhalten Ich bekomme einen Fehler beim Ausführen der .sh Skript mit Python und Django. Die Fehler sind unten angegeben.Fehler beim Unterprozessaufruf mit Python und Django

Traceback (most recent call last): 
    File "cell.py", line 3, in <module> 
    subprocess.call(shlex.split('./test.sh param1 param2')) 
    File "/usr/lib/python2.7/subprocess.py", line 522, in call 
    return Popen(*popenargs, **kwargs).wait() 
    File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child 
    raise child_exception 
OSError: [Errno 13] Permission denied 

Ich erkläre meinen Code unten.

cell.py:

import subprocess 
import shlex 
param1='Reactor1' 
param2='Running' 
subprocess.call(shlex.split('bash test.sh',param1,param2)) 

test.sh:

#!/bin/sh 
echo $1 
echo $2 
exit 0 

Während ich die Datei ausgeführt wurde mir den obigen Fehler. Bitte helfen Sie mir, diesen Fehler zu beheben.

+0

Does 'test.sh' das' + x' haben Attribut gesetzt? –

+0

Ich habe gerade die Datei erstellt und im selben Projektordner gespeichert. – subhra

+0

gehen Sie es dann überprüfen ... alternativ versuchen Sie 'bash test.sh param1 param2' –

Antwort

1

Ersetzen Sie Ihre

subprocess.call(shlex.split('bash test.sh',param1,param2)) 

Um

subprocess.call(shlex.split('bash test1.sh %s %s'%(param1,param2))) 

oder

subprocess.call(['bash', 'test1.sh', param1, param2]) 
+0

@subhra Sie übergeben Parameter aber nicht richtig formatiert, das war der Fehler – Sanket

+0

Dank es funktionierte wie erwartet. – subhra

+0

warum erstellen Sie einen String, nur um ihn später wieder zu teilen? Verwenden Sie einfach 'subprocess.call (['bash', 'test1.sh', param1, param2])' stattdessen –

Verwandte Themen