Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 17, 2015 09:54:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Sherkhan
на эту строку ругается
Sherkhan
Python 2.4




Офлайн

#2 Июнь 17, 2015 10:04:28

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Sherkhan
trains_dict = {k: v for k, _, v in all_trains}
на эту строку ругается (неверный синтаксис)
Python 2.4
К нам сегодня приходил некро-некро-некро-фил. Блин, 2.4, его же еще найти где-то надо было :)

Вот так должно работать под 2,4:
import os
# sample data
template = '/home/pooh/tmp/1'
all_trains = [('1_Chief', 'Trains.USSR_TovarSostav 1', '26000_Chief'),
     ('2_Chief', 'Trains.USSR_FuelCargo 1', '26001_Chief')]
  
input_filename = os.path.join(template, 'trains_way.mis')
output_filename = os.path.join(template, 'mds.mis')
 
trains_dict = dict(map(lambda x: (x[0], x[-1]), all_trains))
in_seq = False
 
inf = open(input_filename)
try:  
    outf = open(output_filename, 'w')
    try:
        for line in inf:           
            if line.startswith('['):                
                train = trains_dict.get(line.strip()[1:-6], None) # delete '[' and  '_Road]' from line for key
                if train:
                    outf.write('[%s_Road]\n' % train)
                    in_seq = True
                else:
                    in_seq = False
            elif in_seq:                
                outf.write(line)
    finally:
        outf.close()
finally:
    inf.close()        



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Июнь 17, 2015 10:04:53

Sherkhan
Зарегистрирован: 2015-06-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Дело в том что продукт старый, написано около 6 тысяч строк кода на этой версии.
И переделывать на более свежую никто не будет. Проект не коммерческий. Я слегка модифицирую код на общественных началах.

ЗЫ: Спасибо, пробую.

Отредактировано Sherkhan (Июнь 17, 2015 10:08:30)

Офлайн

#4 Июнь 17, 2015 11:07:11

Sherkhan
Зарегистрирован: 2015-06-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Сработало. Спасибо!
Есть ещё мааааленькая просьба!
Объясните, пожалуйста, почему в моём коде строки в выходном файле шли в разнобой, а в Вашем упорядоченно!???

Офлайн

#5 Июнь 17, 2015 11:10:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Вы думаете PooH разбирался в вашем коде? Ему проще было с нуля переписать.



Офлайн

#6 Июнь 17, 2015 11:17:26

Sherkhan
Зарегистрирован: 2015-06-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Хм. Ну может хоть предположения есть? Не магия же ж?

Я конечно, попытаюсь понять сам. Но с подсказкой было б быстрее))

Отредактировано Sherkhan (Июнь 17, 2015 11:18:21)

Офлайн

#7 Июнь 17, 2015 12:11:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Sherkhan
Вы лучше попытайтесь понять, почему PooH написал вот это

ЗЫ: сначала пытался прокомментировать построчно все косяки в вашем коде, но проще будет показать как надо



Офлайн

#8 Июнь 17, 2015 12:13:49

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Sherkhan
Объясните, пожалуйста, почему в моём коде строки в выходном файле шли в разнобой, а в Вашем упорядоченно!???
Честно говоря, особо не разбирался, ваш код сразу вызвал резкое желание переписать :)

Предположительно: у вас на каждую итерацию по входному файлу идет проход по списку all_trains, когда какой нибудь его элемент совпадает с входной строкой, то взводится wflag и на каждой итерации по all_trains строки начинают выводится в файл.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Июнь 17, 2015 13:28:03

Sherkhan
Зарегистрирован: 2015-06-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Спасибо!

Офлайн

#10 Июнь 24, 2015 11:46:17

iskander
Зарегистрирован: 2015-06-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Словарь это неупорядоченная коллекция произвольных объектов, поэтому и данные записываются в произвольном порядке.
Вот если бы вы записывали список или кортеж тогда все бы записывалось в строгом порядке.

Отредактировано iskander (Июнь 24, 2015 11:50:00)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version