Форум сайта python.su
0
Всем привет!
Столкнулся с такой ситуацией:
Есть список с правильным порядком строк.
При выводе строк в файл с помощью функции write() или writelines(), порядок строк нарушается.
Как организовать вывод строк в строгом порядке?
Офлайн
253
Sherkhanприведите пример файла описание почему вы думаете что порядок нарушен и ваш код
Всем привет!Столкнулся с такой ситуацией:Есть список с правильным порядком строк.При выводе строк в файл с помощью функции write() или writelines(), порядок строк нарушается.Как организовать вывод строк в строгом порядке?
Офлайн
253
Sherkhanприведите пример файла описание почему вы думаете что порядок нарушен и ваш код
При выводе строк в файл с помощью функции write() или writelines(), порядок строк нарушается.
Офлайн
0
Хм, возможно я понял причину. В конце каждой строки стоит символ конца строки \n. Ща попробую без него.
Офлайн
0
НЕ. Проблема осталась. Кусок кода:
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)
Офлайн
0
А как ещё понять, если команда print выводит правильный порядок строк, а когда просматриваешь выходной файл, там вперемешку.
Офлайн
221
SherkhanТут и не только тут. На форумах код всегда нужно оформлять в теги CODE. смотрите редактор сообщений. Переоформите, ваш код испорчен
ЗЫ: пробелы и табы вначале строк удаляются тут
Офлайн
568
Приложите файл trains_way.mis
Офлайн
72
SherkhanА это вы на каком языке написали?
НЕ. Проблема осталась. Кусок кода:
Офлайн
0
Рассматриваемая подзадача программы (для игрового приложения) состоит в следующем:
Есть файл с шаблонами нескольких маршрутов поездов в игре. Считывается в словарь. Затем точки маршрута проверяются на соответствие определённым критериям и, в случае удовлетворения этим критериям, составы с маршрутами вставляются в файл сценария. Маршруты не меняются, меняется номер состава и тип. Маршрут должен быть вставлен в сценарий в строгой последовательности.
Пример списка 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)
Прикреплённый файлы:
mds.mis (18,5 KБ)
Офлайн