Передача функции в новую функцию для чтения файла - PullRequest
0 голосов
/ 19 февраля 2019

У меня проблема с чтением некоторых текстовых файлов.

Сначала я определил чтение моего текстового файла следующим образом:

def reader(filename):
    with open(filename, encoding='latin-1') as thefile:
        contentsofthefile = f.read()
    return contentsofthefile

Теперь я хочу иметь другую функцию, которая использует вышеуказанную функцию, например:

def remover(filename):
    a = reader(filename)
    for line in a:
        do this 

Это приводит к следующей проблеме:

OSError: [Errno 63] File name too long: 'In search of lost time  - CHAPTER///1 \nThe characters, plotlines,  ...."

Кажется, что он пытается прочитать весь файл как имя файла?

1 Ответ

0 голосов
/ 19 февраля 2019

Если вы собираетесь обрабатывать файл построчно, нет никаких оснований не читать файл также построчно.Вам действительно не нужна функция reader, но она может быть такой простой, как

def reader(filename):
    return open(filename, encoding='latin1=1')

Затем, чтобы использовать reader внутри remover:

def remover(filename):
    with reader(filename) as f:
        for line in f:
            ...

remover("somefile.txt")
...