from subprocess import *
c = 'dir' #Windows
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE, shell=True)
print handle.stdout.read()
handle.flush()
Nếu bạn không sử dụng shell=True
bạn sẽ phải cung cấp Popen()
với một danh sách thay vì một chuỗi lệnh, ví dụ:
c = ['ls', '-l'] #Linux
và sau đó mở nó mà không có vỏ.
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE)
print handle.stdout.read()
handle.flush()
Đây là cách thủ công và linh hoạt nhất mà bạn có thể gọi là tiến trình con từ Python. Nếu bạn chỉ muốn đầu ra, đi cho:
from subproccess import check_output
print check_output('dir')
Để mở một cửa sổ giao diện điều khiển giao diện mới và thực hiện X:
import os
os.system("start cmd /K dir") #/K remains the window, /C executes and dies (popup)
Bạn không cho thấy một thực tế mã cơ sở, vì vậy tôi chỉ tạo ra một ví dụ lệnh dưới đây dựa trên 'dir' trong cửa sổ và' ls' trong linux cho nội dung thư mục danh sách. – Torxed
@Torxed Tôi đã thử mã của bạn và có một vài điều mà tôi không thích: Tôi không thấy bảng điều khiển mới bật lên. Tôi muốn một bàn giao tiếp thứ hai được tạo ra và có thể đọc đầu ra của chương trình mà tôi chạy với 'popen' trong bảng điều khiển mới. Trong chương trình chính của tôi, tôi không cần đầu ra của chương trình mà tôi chạy với 'popen'. Tôi chỉ cần nhìn thấy nó trong một giao diện điều khiển khác nhau. Bạn có thể vui lòng cung cấp một ví dụ về cách thực hiện điều này không? –
Điều đó không rõ ràng từ mô tả vấn đề ban đầu của bạn, bởi vì bạn thấy, "mở một kịch bản trong một bàn điều khiển riêng biệt" đó chính xác là những gì '.Popen()' làm, và nếu bạn kiểm tra quá trình giám sát của bạn, bạn sẽ thấy một cmd .exe được khởi chạy từ bạn gọi '.Popen()', nó chỉ không hiển thị vì nó là một tiến trình con cho ứng dụng của bạn và nó bị "tắt tiếng". Bạn thường không mở các cửa sổ GUI mới chỉ để thực hiện các tác vụ, vì vậy tôi có thể hỏi tại sao bạn muốn điều này? bởi vì nó có vẻ ngược lại với tôi:/ – Torxed