2015-10-11 20 views
7

Tôi muốn thực hiện một lệnh trong thiết bị đầu cuối từ một kịch bản Python.Làm thế nào để thực hiện một lệnh trong thiết bị đầu cuối từ một kịch bản Python?

./driver.exe bondville.dat 

Lệnh này được in ở đầu cuối nhưng không thực thi được.

Dưới đây là các bước của tôi:

echo = "echo" 
command="./driver.exe"+" "+"bondville.dat" 
os.system(echo + " " + command) 

Cần thực hiện lệnh, nhưng nó chỉ in nó trên thiết bị đầu cuối. Khi ăn cùng một thứ bằng tay nó thực hiện. Làm thế nào để làm điều này từ một kịch bản?

+2

Sử dụng các mô-đun subprocess –

+0

@PadraicCunningham Tôi mới để trăn, và mô-đun subprocess này có vẻ rất khó khăn cho tôi để xử lý. Làm thế nào để sử dụng? – Mario

+0

bạn có muốn lưu đầu ra hoặc chỉ chạy lệnh không? –

Trả lời

9

Lệnh thiết bị đầu cuối echo thiết bị đầu cuối lặp lại đối số của nó, vì vậy việc in lệnh đến đầu cuối là kết quả mong đợi.

Bạn đang nhập echo driver.exe bondville.dat và có đang chạy chương trình driver.exe không?
Nếu không, sau đó bạn cần để thoát khỏi tiếng vang trong dòng cuối cùng của mã của bạn:

os.system(command) 
+0

Cảm ơn nó đã làm việc !! – Mario

2

Bạn có thể sử dụng các mô-đun subprocess.check_call để chạy các lệnh, bạn không cần phải echo để chạy lệnh:

from subprocess import check_call 

check_call(["./driver.exe", "bondville.dat"]) 

Tương đương với việc chạy ./driver.exe bondville.dat từ bash.

Nếu bạn muốn nhận được đầu ra bạn sẽ sử dụng check_outout:

from subprocess import check_output 

out = check_output(["./driver.exe", "bondville.dat"]) 

Trong mã riêng của bạn, bạn về cơ bản lặp lại chuỗi command không thực sự chạy lệnh tức là echo "./driver.exe bondville.dat" đó sẽ ra ./driver.exe bondville.dat trong vỏ của bạn.

2

Hãy thử điều này:

import subprocess 
subprocess.call("./driver.exe bondville.dat") 
+1

"Hãy thử" câu trả lời này không hữu ích vì chúng không cho biết vấn đề là gì hoặc cách khắc phục sự cố vào lần sau. –

Các vấn đề liên quan