2013-01-22 29 views
6

thể trùng lặp:
Calling an external command in PythonLàm thế nào để chạy các lệnh trên shell qua python

Tôi muốn chạy lệnh trong thư mục khác sử dụng python.

Các cách khác nhau được sử dụng cho điều này và cách nào hiệu quả nhất?

Những gì tôi muốn làm là như sau,

cd dir1 
execute some commands 
return 
cd dir2 
execute some commands 
+1

Xin xem http://stackoverflow.com/questions/89228/calling-an-external-command- trong python, nơi chủ đề này được thảo luận rộng rãi. –

+0

bạn đã thử gì chưa? Có nghiên cứu nào không? – Mike

Trả lời

1
os.system("/dir/to/executeble/COMMAND") 

ví dụ

os.system("/usr/bin/ping www.google.com") 

nếu chương trình ping nằm ở "/ usr/bin"

Đương nhiên bạn cần nhập mô-đun os.

os.system không chờ đợi bất kỳ đầu ra, nếu bạn muốn đầu ra, bạn nên sử dụng

subprocess.call hoặc một cái gì đó như thế

+0

ai đó nói với tôi rằng chúng tôi có subprocess.call, os.system ... cái nào là hữu ích? – mrutyunjay

+0

Tùy thuộc vào những gì bạn cần. Nếu bạn muốn chỉ cần bắt đầu một cái gì đó trong vỏ ở phía sau, sử dụng os.system. Sử dụng subprocess.call hoặc một cái gì đó tương tự nếu bạn muốn chờ kết quả từ quá trình .. subprocess.Popen, hoạt động khá giống như popen trong c – Gjordis

1

Nếu bạn muốn kiểm soát nhiều hơn các lệnh gọi vỏ (tức là truy cập để stdin và/hoặc ống stdout hoặc bắt đầu nó không đồng bộ), bạn có thể sử dụng các mô-đun subprocess:

import subprocess 

p = subprocess.Popen('ls -al', shell=True, stdout=subprocess.PIPE) 
stdout, stderr = p.communicate() 

Xem thêm subprocess module documentation.

0

Bạn có thể sử dụng Python Subprocess, trong đó cung cấp nhiều mô-đun để thực hiện các lệnh, kiểm tra kết quả đầu ra và nhận các thông báo lỗi, vv

5

Đương nhiên nếu bạn chỉ muốn chạy một (đơn giản) lệnh trên shell qua python, bạn làm điều đó thông qua chức năng system của mô-đun os. Ví dụ:

import os 
os.system('touch myfile') 

Nếu bạn muốn một cái gì đó phức tạp hơn mà cho phép kiểm soát thậm chí tốt hơn các thực hiện các lệnh, đi trước và sử dụng subprocess mô-đun mà những người khác ở đây đã gợi ý.

Để biết thêm thông tin, hãy làm theo những liên kết này:

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