Is this the right way to run a shell script inside

2020-03-08 07:10发布

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

7条回答
forever°为你锁心
2楼-- · 2020-03-08 07:56

I just got this error on Mac OS, while trying to call a one-line script using subprocess.call. The script ran fine when called from the command line. After adding the shebang line #!/usr/bin/env sh, it also ran fine via subprocess.call.

It appears, while the shell has a default executor for text files marked executable, subprocess.Popen does not.

查看更多
登录 后发表回答