Как говорит unutbu, os.path.realpath (path) должен быть правильным ответом, возвращая канонический путь указанного имени файла, разрешая любые символические ссылки на их цели. Но он сломан под Windows.
Я создал патч для Python 3.2, чтобы исправить эту ошибку, и загрузил ее в:
http: //bugs.python. org / issue9949
Он исправляет функцию realpath в Python32 \ Lib\ntpath.py
Я также разместил ее на своем сервере здесь:
http://www.burtonsys.com/ntpath_fix_issue9949.zip
К сожалению, ошибка присутствует и в Python 2.x, и я ничего не знаю для него там.
Зарегистрируйте свой обработчик с помощью signal.signal
следующим образом:
#!/usr/bin/env python
import signal
import sys
def signal_handler(sig, frame):
print('You pressed Ctrl+C!')
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C')
signal.pause()
Код адаптирован из здесь .
Дополнительную документацию по сигналу
можно найти здесь .
import signal
import time
def handler(signum, frame):
print 'Here you go'
signal.signal(signal.SIGINT, handler)
time.sleep(10) # Press Ctrl+c here
Вы можете рассматривать это как исключение (KeyboardInterrupt), как и любое другое. Создайте новый файл и запустите его из оболочки со следующим содержимым, чтобы понять, что я имею в виду:
import time, sys
x = 1
while True:
try:
print x
time.sleep(.3)
x += 1
except KeyboardInterrupt:
print "Bye"
sys.exit()
Вы можете обработать CTRL + C , перехватив исключение KeyboardInterrupt
. Вы можете реализовать любой код очистки в обработчике исключений.
Вы можете использовать функции во встроенном в Python сигнальном модуле ] для настройки обработчиков сигналов в python. В частности, функция signal.signal (signalnum, handler)
используется для регистрации функции обработчика
для сигнала signalnum
.