2012-02-19 37 views
11

Tôi đang gọi một tập lệnh python (B) từ một tập lệnh python khác (A).Làm cách nào để chuyển hướng stdout sang tệp khi sử dụng subprocess.call trong python?

Sử dụng subprocess.call, làm cách nào để chuyển hướng stdout của B sang tệp chỉ định?

Tôi đang sử dụng trăn 2.6.1.

+1

Tại sao các bạn sử dụng ' subprocess.call() 'để thực hiện một kịch bản Python khác? Nó sẽ không tốt hơn để 'import' nó và gọi các chức năng thích hợp? – Johnsyweb

+0

Kịch bản B là một kịch bản lệnh đóng gói đang gọi A mà tôi muốn gửi một danh sách các đối số mà tôi đang lặp qua. – Frez

Trả lời

32

Vượt qua một tập tin như stdout tham số để subprocess.call:

with open('out-file.txt', 'w') as f: 
    subprocess.call(['program'], stdout=f) 
+0

Cảm ơn icktoofay! – Frez

+1

... và điều này nhắc tôi rằng tôi cũng có thể đặt 'stderr = f'. – sage

+0

điều này không hiển thị nhật ký trực tiếp trên màn hình –

1

cách tiếp cận thay thế

import subprocess 
p=subprocess.Popen('lsblk -l|tee a.txt',stdout=subprocess.PIPE,shell=True) 
(output,err)=p.communicate() 
p_status=p.wait() 
print output 

Trên mã sẽ viết ra các lệnh để nộp a.txt

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