Найти - Пользователи
Полная версия: нарушен порядок строк при выводе в файл
Начало » Python для новичков » нарушен порядок строк при выводе в файл
1 2 3 4
FishHook
Sherkhan
на эту строку ругается
Sherkhan
Python 2.4


PooH
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()        
Sherkhan
Дело в том что продукт старый, написано около 6 тысяч строк кода на этой версии.
И переделывать на более свежую никто не будет. Проект не коммерческий. Я слегка модифицирую код на общественных началах.

ЗЫ: Спасибо, пробую.
Sherkhan
Сработало. Спасибо!
Есть ещё мааааленькая просьба!
Объясните, пожалуйста, почему в моём коде строки в выходном файле шли в разнобой, а в Вашем упорядоченно!???
FishHook
Вы думаете PooH разбирался в вашем коде? Ему проще было с нуля переписать.
Sherkhan
Хм. Ну может хоть предположения есть? Не магия же ж?

Я конечно, попытаюсь понять сам. Но с подсказкой было б быстрее))
FishHook
Sherkhan
Вы лучше попытайтесь понять, почему PooH написал вот это
ЗЫ: сначала пытался прокомментировать построчно все косяки в вашем коде, но проще будет показать как надо
PooH
Sherkhan
Объясните, пожалуйста, почему в моём коде строки в выходном файле шли в разнобой, а в Вашем упорядоченно!???
Честно говоря, особо не разбирался, ваш код сразу вызвал резкое желание переписать :)

Предположительно: у вас на каждую итерацию по входному файлу идет проход по списку all_trains, когда какой нибудь его элемент совпадает с входной строкой, то взводится wflag и на каждой итерации по all_trains строки начинают выводится в файл.
Sherkhan
Спасибо!
iskander
Словарь это неупорядоченная коллекция произвольных объектов, поэтому и данные записываются в произвольном порядке.
Вот если бы вы записывали список или кортеж тогда все бы записывалось в строгом порядке.
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