2009-02-23 69 views
45

Tôi đang chạy tập lệnh Python dòng lệnh từ thanh tác vụ Windows bằng cách có một phím tắt trỏ tới trình thông dịch Python với tập lệnh thực tế làm tham số.Tạm dừng bằng Python

Sau khi tập lệnh đã được xử lý, trình thông dịch chấm dứt và cửa sổ đầu ra bị đóng mà không thể đọc đầu ra tập lệnh.

Cách đơn giản nhất để giữ cửa sổ thông dịch mở cho đến khi nhấn phím bất kỳ là gì?

Trong các tệp theo lô, người dùng có thể kết thúc tập lệnh bằng cách tạm dừng. Điều gần nhất với điều này tôi tìm thấy trong python là raw_input() là phụ tối ưu bởi vì nó đòi hỏi phải nhấn phím quay lại (thay vì bất kỳ khóa).

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

Trả lời

51

Một cách là để lại raw_input() ở cuối để tập lệnh chờ bạn nhấn Enter trước khi kết thúc.

+25

[Với Python 3+] (http://stackoverflow.com/questions/954834/easy-how-to-use-raw-input-in-3-1), điều này đã thay đổi thành chỉ 'đầu vào()'. – palswim

+15

Đây không phải là giải pháp. Tôi không biết tại sao người trả lời lại chọn nó. Các thông số kỹ thuật đã được "Nhấn phím bất kỳ và không chỉ Enter". Giải pháp này hoạt động với chỉ nhập. –

+3

@ Wolfpack'08 Trong khi tôi đồng ý rằng câu trả lời này rõ ràng không trả lời câu hỏi, nên chỉ ra rằng đây là một danh sách cao cho tìm kiếm "tạm dừng python" trên google nên vẫn hữu ích khi có câu trả lời này. – CrazyCasta

4

Trong Windows, bạn có thể sử dụng mô-đun msvcrt.

msvcrt.kbhit() Return đúng nếu một phím nhấn được chờ đợi để được đọc.

msvcrt.getch() Đọc nhấn phím và trả về ký tự kết quả. Không có gì được lặp lại vào bảng điều khiển. Cuộc gọi này sẽ chặn nếu nhấn phím không phải là đã sẵn sàng nhưng sẽ không đợi nhập Enter .

Nếu bạn muốn nó cũng làm việc trên các hệ thống Unix như bạn có thể thử bằng cách sử dụng this solutiontermiosfcntl mô-đun.

13

Không cần phải đợi cho đầu vào trước khi đóng cửa, chỉ cần thay đổi lệnh của bạn như sau:

cmd /K python <script> 

Việc chuyển đổi /K sẽ thực hiện lệnh sau đó, nhưng để cửa sổ lệnh thông dịch viên mở, trái ngược với /C , thực hiện và sau đó đóng.

+0

này không giúp trong! trường hợp được chỉ định bởi Bernd: bắt đầu một kịch bản từ một phím tắt trên thanh tác vụ, trừ khi phím tắt được cấu hình đúng (không phải là trường hợp mặc định). –

+0

@bgbg: nhưng toàn bộ ý tưởng là phím tắt được thay đổi –

+0

/K yêu cầu chấm dứt cmd qua "thoát" hoặc đóng cửa sổ bằng chuột. Đó là một chút nhiều hơn một phím bấm :-) –

7

Một cách là để lại một raw_input() ở cuối cái kịch bản chờ đợi để bạn có thể nhấn enter trước khi nó chấm dứt.

Lợi thế của việc sử dụng raw_input() thay vì msvcrt. * Thứ trước đây là một phần của Python chuẩn (tức là nền tảng hoàn toàn). Điều này cũng có nghĩa là cửa sổ kịch bản sẽ còn sống sau khi nhấn đúp chuột vào biểu tượng tập tin kịch bản, mà không cần phải làm

cmd /K python <script> 
+1

+1: Nhiều người có thể tìm thấy phím "Enter" hoặc "Return" mà không gây ra những sai lầm lớn. Yêu cầu "bất kỳ chìa khóa" thay vì trở lại có vẻ hơi ngớ ngẩn một chút. –

0
import pdb 
pdb.debug() 

này được sử dụng để gỡ lỗi kịch bản. Nên hữu ích để phá vỡ cũng.

32

Hãy thử os.system("pause") - Tôi đã sử dụng và nó đã hoạt động đối với tôi.

Đảm bảo bao gồm import os ở đầu tập lệnh của bạn.

8

Các lựa chọn tốt nhất: os.system('pause') < - - điều này thực sự sẽ hiển thị thông báo cho biết 'nhấn phím bất kỳ để tiếp tục' trong khi chỉ thêm raw_input('') sẽ không in được thông báo, chỉ con trỏ sẽ có sẵn.

không liên quan đến trả lời:

os.system("some cmd command") là một lệnh thực sự tuyệt vời như lệnh có thể thực hiện bất kỳ tập tin batch/lệnh cmd.

+0

Tôi gặp phải vấn đề về 'os.system (' pause ') 'như bạn đã nói, và tìm kiếm câu hỏi này. –

-1

Nếu bạn gõ

input("") 

Nó sẽ đợi họ nhấn bất kỳ nút nào thì nó sẽ tiếp tục. Ngoài ra bạn có thể đặt văn bản giữa các dấu ngoặc kép.

2

Có, tôi biết tôi đang đăng bài lên một chủ đề cũ nhưng tôi muốn thêm phiếu bầu cho bằng cách sử dụng đầu vào() (3.x trở lên).

Đã thêm vào cuối tập lệnh .py của tôi, nó thực sự ngăn cửa sổ bảng điều khiển mở và đóng ngay lập tức.

Đối với "sự cố" của khóa cần nhấn để đóng, tôi (và 1.000 người khác, tôi chắc chắn) chỉ cần sử dụng đầu vào ("Nhấn Enter để đóng").

Cảm ơn bạn đã cho phép tôi thêm 2 xu giá trị của tôi :)

.

+0

@ ρяσѕρєяK Bạn đang nói về cái gì vậy? Anh ta nói ngay tại đó để sử dụng 'đầu vào' là những gì OP đang hỏi. Cần phải viết lại và loại bỏ phong cách trò chuyện. – Superbest

1

Trên cửa sổ 10 chèn tại beggining này:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

Strange, nhưng nó làm việc cho tôi (Cùng với đầu vào() ở cuối, tất nhiên)

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