将函数传递给新函数以读取文件

问题描述 投票:-2回答:1

我在阅读一些大量的文本文件时遇到了问题。

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

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,  ...."

它似乎试图将整个文件作为文件名读取?

python data-cleaning
1个回答
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")
© www.soinside.com 2019 - 2024. All rights reserved.