2012-01-27 28 views
11

Tôi muốn có thể xác định biến bằng giá trị trả lại của tập lệnh. Đây là những gì tôi hiện có:Nhận giá trị trả về bằng cách sử dụng tiến trình con

sum_total_earnings_usd = subprocess.call([SCRIPT, "-d", date]) 

Tôi đã kiểm tra giá trị trả về của SCRIPT, tuy nhiên, khi tôi cố gắng và đặt biến này, nó luôn luôn trả về 0 (http://docs.python.org/library/subprocess.html#subprocess.call). Làm cách nào để chạy tập lệnh này và nắm bắt giá trị trả về để lưu dưới dạng biến?

Trả lời

19

Sử dụng subprocess.check_output() thay vì subprocess.call()

+0

Cảm ơn bạn. 'subprocess.check_output()' là một hàm chạy lệnh và trả về giá trị trả về. – David542

+0

Nếu bạn muốn đầu ra ghi giá trị của bạn vào STDOUT và sử dụng 'check_output()' để lấy giá trị. Nếu không, jcollado đúng là trạng thái thoát của quy trình đã được trả về. –

3

subprocess.call đã trả về giá trị quá trình trở lại. Nếu bạn luôn nhận được 0, thì bạn cần phải xem lại SCRIPT để đảm bảo rằng nó trả về giá trị bạn mong đợi.

Để kiểm tra kỹ, bạn cũng có thể thực hiện SCRIPT trong vỏ và sử dụng $? để nhận mã trả lại.

6

Nếu kịch bản của bạn được trả lại giá trị, sau đó bạn sẽ muốn sử dụng subprocess.check_output():

subprocess.check_output([SCRIPT, "-d", date], shell=True). 

subprocess.check_call() được giá trị trả về thức từ kịch bản, và 0 thường có nghĩa là "kịch bản kết thúc thành công".

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