Hôm qua, tôi đã viết và chạy một con trăn script
thực hiện một shell
bằng cách sử dụng subprocess.Popen(command.split())
trong đó lệnh là chuỗi cấu thành đoạn mã .sh
và đối số của nó. Kịch bản này đã hoạt động tốt cho đến ngày hôm qua. Hôm nay, tôi chạy cùng một kịch bản và bây giờ tôi liên tục nhấn lỗi này.subprocess.Popen(): OSError: [Errno 8] Lỗi định dạng Exec trong python?
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
Tôi biết có những câu hỏi tương tự đã được hỏi trước khi liên quan đến câu hỏi này, nhưng trong trường hợp của tôi, tôi đã thử mọi thứ không giải quyết được mục đích của mình. Sử dụng shell=True
không hoạt động vì tập lệnh shell của tôi gọi một tập lệnh shell khác trước khi một số môi trường phải được đặt để chạy tập lệnh đó. Tôi bị mắc kẹt nặng nề trong chuyện này. Tôi chỉ cần khởi động lại hệ thống của tôi một lần. Tôi đang sử dụng ubuntu 12.04
EDIT:
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: nhắn
arg1=$1
arg2=$2
cd $TOP
setup the environment and run shell script
build the kernel ...
execute shell command .....
Bạn đã thử 'import shlex' và sử dụng' shlex.split (shell_command) '? Tài liệu: https://docs.python.org/2/library/shlex.html –
Có, nó cho cùng một lỗi. :( –
Bạn có thể đăng shell_command của mình và phần còn lại của mã (có liên quan) không? Ngoài ra, dòng shebang của tập lệnh của bạn? –