2015-11-17 4 views
1

Я должен переупорядочить входной файл, а затем распечатать вывод в новый файл.Переупорядочение текстового файла - Python

Это входной файл:

The first line never changes. 
The second line was a bit much longer. 
The third line was short. 
The fourth line was nearly the longer line.  
The fifth was tiny. 
The sixth line is just one line more.     
The seventh line was the last line of the original file. 

Это то, что выходной файл должен выглядеть следующим образом:

The first line never changes.            
The seventh line was the last line of the original file. 
The second line was a bit much longer. 
The sixth line is just one line more. 
The third line was short. 
The fifth was tiny. 
The fourth line was nearly the longer line. 

У меня есть код уже что обратный входной файл и выводит его в выходной файл который выглядит следующим образом

ifile_name = open(ifile_name, 'r') 
lines = ifile_name.readlines() 
ofile_name = open(ofile_name, "w") 

lines[-1] = lines[-1].rstrip() + '\n' 
for line in reversed(lines): 
     ofile_name.write(line) 
ifile_name.close() 
ofile_name.close() 

Есть ли в любом случае я могу получить желаемый формат в тексте файл, сохраняя мой обратный код?

Такие, как печать первой строке входного файла, а затем назад и распечатать эту строку, печать вторая строка входного файла, а затем назад и печати, линии и т.д.

К сожалению, если это может показаться неясным, Я очень новичок в Python и переполнении стека.

Заранее спасибо.

ответ

0
ifile_name = "hello/input.txt" 
ofile_name = "hello/output.txt" 
ifile_name = open(ifile_name, 'r') 
lines = ifile_name.readlines() 
ofile_name = open(ofile_name, "w") 

lines[-1] = lines[-1].rstrip() + '\n' 
start = 0 
end = len(lines) - 1 
while start < end: 
    ofile_name.write(lines[start]) 
    ofile_name.write(lines[end]) 
    start += 1 
    end -= 1 
if start == end: 
    ofile_name.write(lines[start]) 
ifile_name.close() 
ofile_name.close() 

использовать два шарниры start и end, чтобы указать, какие строки для записи в файл. start == end, напишите среднюю строку в файл

1

Это очень элегантное решение, которое я считаю, если вам не нужен список, сгенерированный.

with open("ifile_name","r") as f: 
    init_list=f.read().strip().splitlines() 

with open("result.txt","a") as f1: 
    while True: 
     try: 
      f1.write(init_list.pop(0)+"\n") 
      f1.write(init_list.pop()+"\n") 
     except IndexError: 
      break 
Смежные вопросы