2014-11-13 5 views
1

Я пытаюсь написать функцию, которая берет символ и помещает все слова в ifile, который заканчивается символом c в другой новый файл. Я думал, что это будет основано на индексировании строк, но результат текстового файла всегда пуст. Почему это line[0] будет работать, но line[-1] не будет? Я не понимаю, почему эта же концепция не применяется.Получить последний символ строки из файла в Python?

def getListEnd(c,ifile,ofile): 
    for line in ifile: 
     if c in line[-1]: 
      ofile.write(str(line)) 
+1

Вы поделились своим знакомством? –

+0

Итерирование файлов в python оставляет символы окончания строки. Вы уверены, что ifile - это итератор, который отключает CR и LF? – brycem

+0

Что значит линия [0] будет работать, но строка [-1] не будет? строка [-1] возвращает последний символ вашей строки. – muradin

ответ

1

Обязательно позовите ofile.close() в том же объеме, как и где вы писали ofile = open('some_file.txt', 'w'), но после того, как ваш призыв к getListEnd конечно.

Таким образом, вы будете иметь свой код вида:

def getListEnd(c,ifile,ofile): 
    for line in ifile: 
     if c in line[-1]: 
      ofile.write(str(line)) 

infile = open('inputfile.txt', 'r') 
outfile = open('outputfile.txt', 'w') 
getListEnd('$', infile, outfile) 
outfile.close() 
infile.close() 

Если вы не вызываете close(), ваши буфера не могут сбрасываться правильно и, таким образом, ваш файл не будет записан в.

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