将功能传递给新功能以读取文件

时间:2019-02-19 17:19:20

标签: python data-cleaning

阅读一些海量文本文件时遇到问题。

我首先定义如下读取文本文件:

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 :(得分:2)

如果您要逐行处理文件,也没有理由不逐行读取。您实际上并不需要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")