import subprocess retcode = subprocess.call(["/home/myuser/go.sh", "abc.txt", "xyz.txt"])
When I run these 2 lines, will I be doing exactly this?:
/home/myuser/go.sh abc.txt xyz.txt
Why do I get this error? But when I run go.sh normally, I don't get that error.
File "/usr/lib/python2.6/subprocess.py", line 480, in call return Popen(*popenargs, **kwargs).wait() File "/usr/lib/python2.6/subprocess.py", line 633, in __init__ errread, errwrite) File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child raise child_exception OSError: [Errno 8] Exec format error
If you need to execute a shell command with Python, there are two ways. You can either use the subprocess module or the RunShellCommand() function. The first option is easier to run one line of code and then exit, but it isn't as flexible when using arguments or producing text output.
To run Python scripts with the python command, you need to open a command-line and type in the word python , or python3 if you have both versions, followed by the path to your script, just like this: $ python3 hello.py Hello World!
import subprocess process = subprocess. Popen(["ls", "-la"]) print("Completed!") Run the above code and observe the output. You will see that the message Completed! is printed before the execution of the command.
OSError: [Errno 8] Exec format error
This is an error reported by the operating system when trying to run /home/myuser/go.sh
.
It looks to me like the shebang (#!
) line of go.sh
is not valid.
Here's a sample script that runs from the shell but not from Popen
:
#\!/bin/sh echo "You've just called $0 $@."
Removing the \
from the first line fixes the problem.
Change the code to following:
retcode = subprocess.call(["/home/myuser/go.sh", "abc.txt", "xyz.txt"], shell=True,)
Notice "shell=True"
From: http://docs.python.org/library/subprocess.html#module-subprocess
On Unix, with shell=True: If args is a string, it specifies the command string to execute through the shell. This means that the string must be formatted exactly as it would be when typed at the shell prompt.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With