玖叶教程网

前端编程开发入门

Python 逐行读取文件的各种方法(python逐行读取excel内容)

Python 逐行读取文件的各种方法

5 分钟阅读

在本教程中,我们将描述 Python 中逐行读取文件的多种方法,并提供示例,例如使用 readlines()、上下文管理器、while 循环等。在此之后,您可以根据条件在项目中采用最适合的这些方法之一。

Python 使程序员的文件 I/O 变得超级容易。但是,由您决定哪种技术最适合您的情况。这将取决于许多参数,例如此类操作的频率、文件的大小等。

假设我们有一个 logs.txt 文件与 Python 脚本一起驻留在同一个文件夹中。

在 Python 中逐行读取文件的各种技术

现在,我们将逐行介绍每种方法以读取文件。

Readlines() 一起读取所有行

对于较小的文件,我们建议使用此解决方案。如果文件大小很大,则在将整个文件加载到内存中时,它会变得效率低下。

但是,当文件较小时,更容易逐行加载和解析内容。

readlines() 返回文件中所有行的序列,每个行都包含换行符,最后一个除外。

我们已经在下面的示例中演示了 readlines() 函数的使用。在这里,您可以看到我们也在使用 Python while 循环来遍历这些线。


ListOfLines = ["Python", "CSharp", "PHP", "JavaScript", "AngularJS"]

def createFile():
    wr = open("Logs.txt", "w")
    for line in ListOfLines:
      wr.write(line)
      wr.write("\n")
    wr.close()

def readFile():
    rd = open ("Logs.txt", "r")

    out = rd.readlines()
     
    # Close file 
    rd.close()
    
    return out

# Main test
def main():
    
    # create Logs.txt
    createFile()
    
    # read lines from Logs.txt
    outList = readFile()
    
    # Iterate over the lines
    for line in outList:
        print(line.strip())    

# Run Test
if __name__ == "__main__":
    main()

输出如下:

Python
CSharp
PHP
JavaScript
AngularJS

另一方面,上述解决方案将导致大文件的内存使用率很高。因此,您应该选择不同的方法。

例如,您可能想尝试这个。

Readline() 逐行读取文件

当文件大小达到 MB 或 GB 时,正确的想法是一次获取一行。Python readline() 方法有效地完成了这项工作。它不会一次性加载所有数据。

readline() 读取文本直到换行符并返回该行。它通过返回一个空白字符串来处理 EOF(文件结尾)。

ListOfLines = ["Tesla", "Ram", "GMC", "Chrysler", "Chevrolet"]

def createFile():
    wr = open("Logs.txt", "w")
    for line in ListOfLines:
      # write all lines
      wr.write(line)
      wr.write("\n")
    wr.close()

def readFile():
    rd = open ("Logs.txt", "r")

    out = [] # list to save lines
    while True:
        line = rd.readline()
        if not line :
            break;
        out.append(line.strip())
     
    rd.close()
    
    return out

# Main test
def main():

    createFile()
    
    outList = readFile()
    
    for line in outList:
        print(line.strip())    

if __name__ == "__main__":
    main()

执行后,输出为:

Tesla
Ram
GMC
Chrysler
Chevrolet

使用 Python 上下文管理器读取文件

Python提供了上下文管理器的概念。它涉及将“with”子句与文件 I/O 函数一起使用。它会跟踪打开的文件,并在文件操作结束后自动关闭它。

因此,我们可以确认您永远不会错过使用上下文管理器关闭文件句柄。它执行清理任务,例如相应地关闭文件。

在下面的示例中,您可以看到我们使用上下文管理器(with)和Python for loop首先写入然后读取行。


ListOfLines = ["NumPy", "Theano", "Keras", "PyTorch", "SciPy"]

def createFile():
    with open ("testLog.txt", "w") as wr:
        for line in ListOfLines:
            # write all lines
            wr.write(line)
            wr.write("\n")

# Function to read test log using context manager
def readFile():
    rd = open ("testLog.txt", "r")

    out = [] # list to save lines
    with open ("testLog.txt", "r") as rd:
        for line in rd:
            out.append(line.strip())

    return out

def main():
    
    createFile()
    
    outList = readFile()
    
    for line in outList:
        print(line.strip())    

if __name__ == "__main__":
    main()

运行代码片段后,输出为:

NumPy
Theano
Keras
PyTorch
SciPy


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言