2016-07-01 2 views
0

Я думаю, я должен попытаться объяснить, что я делаю, я пытаюсь перевести текстовый файл в отдельный файл из формата слева направо в формат «вверх-вниз». Вот пример:Как переписать текстовые файлы в формат вниз? (Python 3)

Здравствуйте,
это текстовый файл

H     т
е     ч
л       я
л       s
о    
,       я
      с

   

    т
    е
    х
    т

    е
    я
    л
    е

Я знаю, что приведенный выше пример не является совершенным, но форматирование это в HTML намного сложнее, чем в текстовом файле. В любом случае, это то, что я пытаюсь сделать, однако, когда моя программа получает для цикла в функции WriteToFile, этот цикл:

для a_line в r_file:

По какой-то причине он просто останавливается и Безразлично Что-нибудь после этого? Я не совсем уверен, почему это происходит, поскольку функция maxLineLeng имеет один и тот же цикл, и он работает нормально. Если вам нужно, чтобы я объяснил еще кое-что, что могу, и если вы можете помочь, это будет фантастично!

BTW Я пытаюсь сделать это таким образом, чтобы избежать использования памяти, поскольку простое копирование по каждой строке в список не будет работать, если у вас была очень длинная строка в текстовом файле или текстовый файл был просто гигантский.

# Silly downward lists for lines of text in a file 
# Description: Takes lines in a file and prints them from top to bottom 
# instead of from left to right. 



# What this does is it goes through a text file and goes through each character in each line. 
# It then writes those characters to a separate file from left to right format to up and down format 
# It does this by going through each first character of each line in read file and 
# writing it to the write file. Then it goes to the second character of each line in read file 
# and writes that character to a newline in the write file. 
# Keeps going until it reaches the end of the longest line in the sequence 

# Finds the line with max length and returns that length. 
def maxLineLeng(r_file): 
    Max = 0 
    for a_line in r_file: 
     if len(a_line) > Max: 
      Max = len(a_line) 

    return Max 

# Writes to the file in up to down format 
def writeToFile(r_file, w_file, i): 
    if i != 0: 
     w_file.write("\n") 
     for a_line in r_file: 
      if len(a_line) > i: 
       w_file.write(a_line(i)) 
       w_file.write(" ") 
    else: 
     for a_line in r_file: 
      if len(a_line) > i: 
       w_file.write(a_line(i)) 
       w_file.write(" ") 

# open necessary files in proper format 
def main(): 
    with open("exampleR.txt",'r') as r_file: # 'with' automatically closes the file 
     with open("exampleW.txt",'w') as w_file: 
      Max = maxLineLeng(r_file) 
      for i in range(Max): 
       writeToFile(r_file, w_file, i) 

# begin the program 
main() 
input("\n\nPress enter to quit") 

ответ

0

вы идете trought файла r_file в первый раз в maxLineLeng, так что «чтение курсор» файл получить в конце файла, вы должны поместить его снова в начале после первого цикла или до второго

r_file.seek(0)

+0

О, мужчина! Это правильно, спасибо! Я думал, что это просто, но почему-то это не видно! Огромное спасибо! Супер топили! – zicameau

+0

ваш прием, можете ли вы просто поставить ответ, который я дал вам как право закрыть сообщение?;) – lu1her

Смежные вопросы