Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 30, 2012 08:56:34

Buldozer
Зарегистрирован: 2012-08-16
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемные ошибки

Собственно мучают 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)

Офлайн

#2 Авг. 30, 2012 09:22:12

ad3w
От: Hua Hin, Thailand
Зарегистрирован: 2012-01-27
Сообщения: 59
Репутация: +  4  -
Профиль   Отправить e-mail  

проблемные ошибки

Может код покажите?



Офлайн

#3 Авг. 30, 2012 12:39:29

Buldozer
Зарегистрирован: 2012-08-16
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемные ошибки

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 ошибки

Офлайн

#4 Авг. 30, 2012 14:02:27

_wolkodaw_
От:
Зарегистрирован: 2011-06-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемные ошибки

У Вас:
1. смешаны пробелы и табуляция (стр.14);
2. Разный пробельный отступ (строки 18,20);
3. except должен находиться на уровне try (строки 13,19), а то, что между ними — с бо́льшими отступами.

Почитайте правила оформления кода (там достаточно доступно, в т.ч. про отступы):
http://www.python.org/dev/peps/pep-0008/



Отредактировано _wolkodaw_ (Авг. 30, 2012 14:08:30)

Офлайн

#5 Авг. 30, 2012 16:34:05

Buldozer
Зарегистрирован: 2012-08-16
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемные ошибки

_wolkodaw_
Спасибо за ссылочку

Офлайн

#6 Авг. 30, 2012 18:50:58

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

проблемные ошибки

Простое правило: после каждого : идет отступ на 4 пробела или таб. Табы использовать не рекомендуется.

Офлайн

#7 Авг. 31, 2012 07:45:38

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемные ошибки

odnochlen
Табы использовать не рекомендуется.
Почему? Я всегда Tab ставлю…



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#8 Авг. 31, 2012 08:06:19

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

проблемные ошибки

Рекомендация PEP-8



Офлайн

#9 Авг. 31, 2012 16:42:29

_wolkodaw_
От:
Зарегистрирован: 2011-06-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемные ошибки

Всё-таки,
«The second-most popular way is with tabs only.»

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

В этом случае, какова бы ни была ширина tab-ов, код никогда не разъедется, но при этом будет возможность менять их ширину (какому разработчику как нравится), и быстро определять вложенность.



Офлайн

#10 Авг. 31, 2012 17:07:01

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

проблемные ошибки

Для новых проектов PEP-8 рекомендует везде использовать пробелы: “For new projects, spaces-only are strongly recommended over tabs”.



Отредактировано Soteric (Авг. 31, 2012 17:09:22)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version