2013-06-23 43 views
6

Tôi muốn tạo một chương trình có thể thực thi các tệp jar và in bất kỳ tệp jar nào đang làm trong chương trình python của tôi nhưng không sử dụng dòng lệnh của cửa sổ, tôi đã tìm kiếm trên toàn bộ web nhưng không có gì với cách thực hiện điều này.Chạy các tệp Jar từ Python

Chương trình của tôi là trình bao bọc máy chủ Minecraft và tôi muốn nó chạy tệp server.jar và thay vì chạy nó trong dấu nhắc lệnh cửa sổ, tôi muốn nó chạy bên trong vỏ Python.

Bất kỳ ý tưởng nào?

+0

Xin chào Daniel, mục đích của việc muốn lắng nghe những gì các ứng dụng khác đang làm là gì? Đó có phải là các bản ghi bạn muốn nghe hay cái gì khác không? Lưu lượng mạng? Thứ gì khác? Vui lòng cung cấp thêm một số chi tiết để vẽ một bức tranh lành mạnh về vấn đề của bạn. Hi vọng điêu nay co ich! – jmort253

+1

Có một số thông tin khác ngay bây giờ, Hy vọng giúp giải thích những gì Im đang làm. – Elxafil

Trả lời

7

Trước tiên, bạn phải thực hiện chương trình. Một chức năng hữu ích để làm như vậy:

def run_command(command): 
    p = subprocess.Popen(command, 
        stdout=subprocess.PIPE, 
        stderr=subprocess.STDOUT) 
    return iter(p.stdout.readline, b'') 

Nó sẽ trả về một lần lặp với tất cả các dòng đầu ra.
Và bạn có thể truy cập vào các đường và in sử dụng

for output_line in run_command('java -jar jarfile.jar'): 
    print(output_line) 

add cũng import subprocess, như run_command sử dụng subprocess.

+0

Tôi gặp lỗi khi nói b'Error: Không thể tìm hoặc tải class chính craftbukkit.jar \ r \ n ', vậy tôi phải làm gì. – Elxafil

+0

Mã java của bạn có hoạt động tốt không? Ý tôi là độc lập? – svineet

+0

đầu ra ban đầu là từ jvm, vì vậy tôi cho rằng mã java của bạn có một số lỗi. – svineet

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