2017-01-07 24 views
12

Trên các máy tính trước, khi tôi cố gắng thoát khỏi tập lệnh python trên dấu nhắc lệnh Windows, tất cả những gì bạn cần làm là bấm ctrl + c. Nhưng khi tôi làm điều đó trên máy tính, nó cho tôi biết "KeyboardInterrupt"cách thoát khỏi kịch bản python trong dấu nhắc lệnh

C:\Windows\System32 
>python 
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> [I press ctrl+c] 
KeyboardInterrupt 
>>> 

Vậy làm cách nào để khắc phục điều này để tôi có thể thoát tập lệnh python?

Sửa:
ctrl +z công trình, nhưng tôi cần phải nhập nó như mã. Đã hy vọng cho một cách nhanh chóng và dễ dàng để chỉ cần thoát khỏi kịch bản, nhưng oh tốt.

+1

ctrl + c dừng mọi quá trình hiện đang chạy. Sử dụng 'quit()' để thoát khỏi giao diện điều khiển. – 3novak

+0

nhấn + d để thoát – elyashiv

+1

Thay vào đó, hãy thử nhập 'exit()'. – Inconnu

Trả lời

16

Nó thực sự phụ thuộc vào hệ điều hành và có thể trên phiên bản Python bạn đang sử dụng.

Như bạn nói, ctrl +C không hoạt động trên Windows của bạn 10 với Python 3.6, nhưng nó không làm việc trên Windows của tôi 10 với Python 3.4. Vì vậy, bạn thực sự cần phải thử và xem những gì làm việc cho bạn.

Hãy thử các lệnh sau, và giữ một trong những hoạt động:

  • ctrl + C
  • ctrl + D
  • ctrl + Z sau đó Quay lại

Bên cạnh đó, sau đây sẽ làm việc với bất kỳ thiết bị đầu cuối:

  • exit() sau đó Return
  • quit() sau đó Return

Trivia: nếu bạn gõ quit và nhấn Quay lại, bảng điều khiển cho bạn biết, ít nhất là đối với Python 3.4:

Use quit() or Ctrl-Z plus Return to exit

+1

Ctrl + C chỉ "hoạt động" (đó là lỗi) trong Windows 8+ trước Python 3.6 vì triển khai Windows ['ReadFile'] (https://msdn.microsoft.com/en-us/library/aa365467) đã bị hỏng hợp đồng API của nó để đặt lỗi cuối cùng thành 'ERROR_OPERATION_ABORTED' khi đọc từ bảng điều khiển bị gián đoạn bởi Ctrl + C. Không có điều đó, REPL của Python cho rằng việc đọc thành công đã trả về 0 byte, tức là kết thúc tệp và thoát. 3.6 chuyển sang gọi 'ReadConsoleW' để hỗ trợ Unicode tốt hơn, và chức năng này đặt ra lỗi thích hợp cho một lần đọc bị ngắt bởi Ctrl + C. – eryksun

+1

'ReadFile' trả về EOF nếu bộ đệm đọc từ bàn điều khiển bắt đầu bằng Ctrl + Z, nhưng đó là đọc đã đọc nên bạn phải nhấn enter để hoàn tất việc đọc. ['ReadConsole'] (https://msdn.microsoft.com/en-us/library/ms684958) không thực hiện hack này, vì vậy REPL của Python trong 3.6 thực hiện điều này một mình. Nhưng vì nó sử dụng 'ReadConsole', tôi nghĩ rằng nó cũng nên sử dụng tham số' pInputControl' để hỗ trợ ngay lập tức Ctrl + D, tương tự như một thiết bị đầu cuối Unix. – eryksun

+1

'thoát' và' thoát' được cung cấp bởi mô-đun 'site'. Chúng không có sẵn nếu bạn chạy Python với tùy chọn '-S' ngăn cản việc nhập' site'. Chúng tiện lợi cho REPL. Một kịch bản thay vào đó nên dựa vào 'sys.exit ([exit_code])' hoặc 'tăng SystemExit ([exit_code])'. – eryksun

0

Bạn có thể chỉ cần nhập "quit()" và xong!
CTRL + C sẽ làm gián đoạn tập lệnh đang chạy; nhưng bạn chỉ muốn bỏ thông dịch viên. Vì vậy, quit() chức năng sẽ làm việc cho bạn.

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