2017-02-04 2 views
2

Python ne se ferme pas lorsque vous utilisez Ctrl-C dans Powershell/Invite de commandes, et donne à la place une chaîne "KeyboardInterrupt".Ctrl-C pour quitter Python dans Powershell ne fonctionne plus

Récemment, j'ai réinstallé Windows 10. Avant la réinstallation Ctrl-C quitter python (3.5/2.7) bien, sans sortie.

Est-ce que quelqu'un sait pourquoi cela a commencé à se produire? Que ce soit juste un réglage simple?

La seule différence que je peux penser est que je suis maintenant sur python 3.6. Ctrl-D fonctionne dans Bash sur Ubuntu sous Windows, et Ctrl-C fonctionne très bien dans un environnement anaconda python2 activé pour quitter python.

Répondre

1

C'est un bug qui est récemment apparu dans Windows 10 Insider construire 15002.

Un travail autour de changer les touches Ctrl C cartographiées de quelque chose comme Ctrl K

Si vous n'êtes pas familar comment faites cela, vous pouvez consulter ou à stty -a

Vous pouvez exécuter cette commande sur chaque session bash qui tracera votre TERMINATE Ctrl + K

stty intr \^k 

En tant que solution TEMP vous pouvez inclure dans votre Bashrc il est exécuté sur chaque nouvelle session

Ce bug a été signalé déjà sur Github # 1569

+0

Merci Dave. Je vais regarder ça. – oblong

0

Lorsque vous appuyez sur Contrôle C, une exception KeyboardInterrupt est levée. Si elle ne s'arrête pas le code, la meilleure chose à faire est d'ajouter une déclaration try dans votre code qui attrape KeyboardInterrupt

try: 
    .... 

except KeyboardInterrupt: 
    exit() 

Le code est juste à côté du haut de ma tête désolé si quelque chose ne va pas.

EDIT: Ctrl Break ou sur certains claviers Ctrl Pause arrête instantanément le code python apparemment.

+0

Merci pour la réponse. Mais il ne s'agit pas d'arrêter le code. Il s'agit juste de quitter Python. Quand je pressais Ctrl-C, python était normalement fermé sans aucune sortie. Pourquoi cela a-t-il changé pour donner juste une sortie de KeyboardInterrupt? Je ne suis pas génial pour ce genre de choses et je m'excuse pour tout ce qui est stupide. – oblong