Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 16, 2015 21:07:16

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

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

Всем привет!
Столкнулся с такой ситуацией:
Есть список с правильным порядком строк.
При выводе строк в файл с помощью функции write() или writelines(), порядок строк нарушается.
Как организовать вывод строк в строгом порядке?

Офлайн

#2 Июнь 16, 2015 21:25:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

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

Sherkhan
Всем привет!Столкнулся с такой ситуацией:Есть список с правильным порядком строк.При выводе строк в файл с помощью функции write() или writelines(), порядок строк нарушается.Как организовать вывод строк в строгом порядке?
приведите пример файла описание почему вы думаете что порядок нарушен и ваш код



Офлайн

#3 Июнь 16, 2015 21:26:31

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

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

Sherkhan
При выводе строк в файл с помощью функции write() или writelines(), порядок строк нарушается.
приведите пример файла описание почему вы думаете что порядок нарушен и ваш код



Офлайн

#4 Июнь 16, 2015 21:46:58

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

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

Хм, возможно я понял причину. В конце каждой строки стоит символ конца строки \n. Ща попробую без него.

Офлайн

#5 Июнь 16, 2015 21:49:40

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

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

НЕ. Проблема осталась. Кусок кода:

    
    wflag = False
    fkey = 1
    ways = []
    fString=''
    lw = open(template+'\\trains_way.mis','rt')
    dwr = open(template+'\\mds.mis','wt')
    line = lw.readline()
    while line:
        ways.append((fkey,line))
        fkey = fkey + 1
        line = lw.readline()
    ways.sort()
    for i, j in ways:  #Перебираем строки файла way 
        #print line
        # Если строка содержит путь поезда из выбранных в all_trains, копируем её и все точки пути
        for k,l,m in all_trains:
            #print k
            if j.rstrip() == k:
                # Вставляем путь в файл
                way = '[' + m + '_Road]'
                dwr.writelines(way)
                wflag = True
            elif j[0] != '[' and wflag == True:
                fString=fString+j
                #las.write(j)
            else:
                dwr.writelines(fString)
                wflag = False
                fString=''

Отредактировано Sherkhan (Июнь 17, 2015 07:54:20)

Офлайн

#6 Июнь 16, 2015 21:51:28

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

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

А как ещё понять, если команда print выводит правильный порядок строк, а когда просматриваешь выходной файл, там вперемешку.

Офлайн

#7 Июнь 16, 2015 23:43:10

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

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

Sherkhan
ЗЫ: пробелы и табы вначале строк удаляются тут
Тут и не только тут. На форумах код всегда нужно оформлять в теги CODE. смотрите редактор сообщений. Переоформите, ваш код испорчен



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Июнь 17, 2015 05:55:19

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

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

Приложите файл trains_way.mis



Офлайн

#9 Июнь 17, 2015 06:44:58

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

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

Sherkhan
НЕ. Проблема осталась. Кусок кода:
А это вы на каком языке написали?
Покажите пример файла trains_way.mis и пример содержимого all_trains.

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



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

Офлайн

#10 Июнь 17, 2015 07:37:31

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

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

Рассматриваемая подзадача программы (для игрового приложения) состоит в следующем:
Есть файл с шаблонами нескольких маршрутов поездов в игре. Считывается в словарь. Затем точки маршрута проверяются на соответствие определённым критериям и, в случае удовлетворения этим критериям, составы с маршрутами вставляются в файл сценария. Маршруты не меняются, меняется номер состава и тип. Маршрут должен быть вставлен в сценарий в строгой последовательности.
Пример списка all_trains:
[('1_Chief', ‘Trains.USSR_TovarSostav 1’, ‘26000_Chief’),
('2_Chief', ‘'Trains.USSR_FuelCargo 1’, ‘26001_Chief’)]
Приведённый выше кусок кода должен делать следующее:
1.Читать шаблон с маршрутами, которые выглядят так:
(идентификатор поезда)
1_Chief_Road
точка маршрута
точка маршрута
….
2_Chief_Road
точка маршрута
точка маршрута
….
2. В случае совпадения идентификатора с первым элементом тройки all_trains, в выходной файл вставляется изменённый идентификатор (третий элемент из тройки all_trains) и весь маршрут.

ЗЫ: fkey (в куске кода) - это попытка сохранить порядок строк маршрута путём нумерации, но так тоже не получилось((

Отредактировано Sherkhan (Июнь 17, 2015 07:56:43)

Прикреплённый файлы:
attachment mds.mis (18,5 KБ)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version