Форум сайта python.su
0
Собственно мучают 2 ошибки,как их исправить. Перепробывал всяческие отступы,и 4 пробела и TAB не помогает,читал про :retab.Может кто знает решение проблемы?
unindent does not match any outer indentation level
unexpected unindent
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "doktor.py", line 15 while True: ^ IndentationError: unexpected unindent >>>
Отредактировано Buldozer (Авг. 30, 2012 09:41:11)
Офлайн
4
Может код покажите?
Офлайн
0
import os import time import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('localhost', 8000)) s.listen(5) paths={'e':'/windows/e', 'g':'/windows/G', 'f':'/windows/f', 'z':'/usr/z'} while True: with open('arhiv.txt','a') as fout: try: client, addr = s.accept() while True: data = client.recv(1024) if data: print >>fout, ("Data: %s" % data) except Exception, ex: print >>fout, ("Some exception!\n",ex) try: print >>fout, ("IP: {ip}".format(ip=addr)) print >>fout, ("Host: {name}".format(name=socket.gethostbyaddr(str(addr)))) except (NameError, socket.error): pass print >>fout, time.strftime("%d.%m.%Y %H:%M:%S") for name in paths.keys(): print >>fout, '%s acces - %s'%( name,os.access(paths[name],os.F_OK)) time.sleep(5)
Офлайн
0
У Вас:
1. смешаны пробелы и табуляция (стр.14);
2. Разный пробельный отступ (строки 18,20);
3. except должен находиться на уровне try (строки 13,19), а то, что между ними — с бо́льшими отступами.
Почитайте правила оформления кода (там достаточно доступно, в т.ч. про отступы):
http://www.python.org/dev/peps/pep-0008/
Отредактировано _wolkodaw_ (Авг. 30, 2012 14:08:30)
Офлайн
0
_wolkodaw_Спасибо за ссылочку
Офлайн
14
Простое правило: после каждого : идет отступ на 4 пробела или таб. Табы использовать не рекомендуется.
Офлайн
0
odnochlenПочему? Я всегда Tab ставлю…
Табы использовать не рекомендуется.
Офлайн
20
Рекомендация PEP-8
Офлайн
0
Всё-таки,
«The second-most popular way is with tabs only.»
Простое правило — tab-ы — только для отступов, и только перед первым значащим символом.
После первого значащего символа — пробелы.
В этом случае, какова бы ни была ширина tab-ов, код никогда не разъедется, но при этом будет возможность менять их ширину (какому разработчику как нравится), и быстро определять вложенность.
Офлайн
20
Для новых проектов PEP-8 рекомендует везде использовать пробелы: “For new projects, spaces-only are strongly recommended over tabs”.
Отредактировано Soteric (Авг. 31, 2012 17:09:22)
Офлайн