subprocess.call()用于编写文件的shell程序

时间:2014-01-06 10:11:48

标签: python shell popen

我需要使用python执行shell脚本。 shell程序的输出是一个文本文件。没有脚本输入。帮我解决这个问题。

def invokescript( shfile ):
  s=subprocess.Popen(["./Script1.sh"],stderr=subprocess.PIPE,stdin=subprocess.PIPE);
  return;

invokescript("Script1.sh");

使用上面的代码时,我收到以下错误。

Traceback (most recent call last):
  File "./test4.py", line 12, in <module>
    invokescript("Script1.sh");
  File "./test4.py", line 8, in invokescript
    s=subprocess.Popen(["./Script1.sh"],stderr=subprocess.PIPE,stdin=subprocess.PIPE);
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 8] Exec format error

提前致谢...

2 个答案:

答案 0 :(得分:0)

试试这个:

import shlex

def invokescript(shfile):
    return subprocess.Popen(
        shlex.split(shfile),
        stderr=subprocess.PIPE,
        stdin=subprocess.PIPE
    )

invokescript("Script1.sh");

然后将#!/usr/bin/env bash添加到您的bash文件中。

答案 1 :(得分:0)

我使用os.system()来调用shell脚本。这就是我的预期。确保在python代码中导入了os模块。

invokescript( "Script1.sh" ) // Calling Function

function invokescript( shfile ):  // Function Defenition
     os.system("/root/Saranya/Script1.sh")
     return;

以下也是可执行的:

invokescript( "Script1.sh" ) // Calling Function

function invokescript( shfile ):  // Function Defenition
     os.system(shfile)
     return;

感谢您的回复。

相关问题