Найти - Пользователи
Полная версия: проблемные ошибки
Начало » Python для новичков » проблемные ошибки
1 2
Buldozer
Собственно мучают 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
>>> 
ad3w
Может код покажите?
Buldozer
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)
Пардон подумал код ошибки. Знаю что еще много отступов надо,но интересуют именно эти 2 ошибки
_wolkodaw_
У Вас:
1. смешаны пробелы и табуляция (стр.14);
2. Разный пробельный отступ (строки 18,20);
3. except должен находиться на уровне try (строки 13,19), а то, что между ними — с бо́льшими отступами.

Почитайте правила оформления кода (там достаточно доступно, в т.ч. про отступы):
http://www.python.org/dev/peps/pep-0008/
Buldozer
_wolkodaw_
Спасибо за ссылочку
odnochlen
Простое правило: после каждого : идет отступ на 4 пробела или таб. Табы использовать не рекомендуется.
Seganapa
odnochlen
Табы использовать не рекомендуется.
Почему? Я всегда Tab ставлю…
Soteric
Рекомендация PEP-8
_wolkodaw_
Всё-таки,
«The second-most popular way is with tabs only.»

Простое правило — tab-ы — только для отступов, и только перед первым значащим символом.
После первого значащего символа — пробелы.

В этом случае, какова бы ни была ширина tab-ов, код никогда не разъедется, но при этом будет возможность менять их ширину (какому разработчику как нравится), и быстро определять вложенность.
Soteric
Для новых проектов PEP-8 рекомендует везде использовать пробелы: “For new projects, spaces-only are strongly recommended over tabs”.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB