2010-05-29 32 views
6

Với subprocess.call hoặc subprocess.Popen, việc thực hiện lệnh shell sẽ làm cho cửa sổ shell xuất hiện nhanh chóng và biến mất.Chạy các lệnh shell không có cửa sổ shell

Làm cách nào tôi có thể chạy lệnh trình bao mà không có cửa sổ trình bao?

+1

Nền tảng nào? (Âm thanh như Windows.) –

+0

liên quan: [Làm cách nào để ẩn bảng điều khiển khi tôi sử dụng os.system() hoặc subprocess.call()?] (Http://stackoverflow.com/q/7006238/4279) – jfs

Trả lời

23

Tôi tưởng tượng sự quan sát của bạn bị giới hạn trong Windows, vì tôi tin rằng đó là nền tảng duy nhất mà bạn sẽ gặp phải vấn đề "flash điều khiển" đó. Nếu vậy, thì docs cung cấp đoạn bán hữu ích sau đây:

Các startupinfo và creationflags, nếu nhất định, sẽ được chuyển đến các tiềm ẩn CreateProcess() chức năng. Họ có thể chỉ định những thứ như hình thức của cửa sổ chính và ưu tiên cho quy trình mới. (Windows chỉ)

Thật không may, tài liệu trực tuyến Python không sao chép phần tài liệu Windows API có liên quan, vì vậy bạn phải xác định vị trí những nơi khác, ví dụ: bắt đầu here trên MSDN dẫn bạn here cho creationflags, và đặc biệt để

CREATE_NO_WINDOW 
0x08000000 

Quá trình này là một giao diện điều khiển ứng dụng rằng đang được chạy mà không có một cửa sổ giao diện điều khiển. Do đó, giao diện điều khiển xử lý cho ứng dụng không được đặt.

Vì vậy, thêm creationflags=0x08000000 để Popen cuộc gọi của bạn sẽ giúp (tiếc là tôi không có máy tính Windows chạy trên đó để thử này ra, vì vậy bạn sẽ phải thử nó cho mình).

+0

cảm ơn câu trả lời nhanh! –

+0

Được xác minh trên máy tính Windows. Cảm ơn bạn! –

+0

Rất đẹp, công trình này! – ChristopheD

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