subprocess.Popen():OSError:[Errno 8] Python中的Exec格式错误? [英] subprocess.Popen(): OSError: [Errno 8] Exec format error in python?

查看:383
本文介绍了subprocess.Popen():OSError:[Errno 8] Python中的Exec格式错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

昨天,我编写并运行了python script,它使用subprocess.Popen(command.split())执行shell,其中命令是构成.sh脚本及其参数的字符串.直到昨天,该脚本运行良好.今天,我运行了相同的脚本,但现在我不断遇到此错误.

Yesterday, I wrote and ran a python script which executes a shell using subprocess.Popen(command.split()) where command is string which constitutes .sh script and its argument. This script was working fine until yesterday. Today, I ran the same script and now I am continuously hitting this error.

p=subprocess.Popen(shell_command.split())
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

我知道之前有与此问题相关的类似问题,但是就我而言,我尝试了所有无法解决我的目的的问题.使用shell=True不起作用,因为我的Shell脚本调用了另一个Shell脚本,在此之前必须设置一些环境才能运行该脚本.我深陷于此.我只是重新启动系统一次.我正在使用ubuntu 12.04

I know there are similar questions that have been asked before related to this question, but in my case I tried everything which doesn't solve my purpose. Using shell=True does not work because my shell script calls an another shell script before which some environment has to be set in order to run that script. I am badly stuck in this. I just restart my system once. I am using ubuntu 12.04

 import subprocess
 import os
 import sys

 arg1=sys.argv[1]
 arg2=sys.argve[2]

 shell_command = 'my_path/my_shell.sh ' + arg1 + ' '+ arg2
 P = subprocess.Popen(shell_command.split())
 P.wait()

my_shell.sh:

  arg1=$1
  arg2=$2

  cd $TOP
  setup the environment and run shell script
  build the kernel ...
  execute shell command .....

推荐答案

我通过将以下行放在被调用的shell脚本的顶部来解决了这个问题:

I solved this by putting this line at the top of the called shell script:

#!/bin/sh

这将确保系统在运行脚本时始终使用正确的解释器.

That will guarantee that the system always uses the correct interpreter when running your script.

这篇关于subprocess.Popen():OSError:[Errno 8] Python中的Exec格式错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆