读取一个大文件vs打开数千个文件

时间:2015-05-05 11:02:39

标签: python

我有20333个文件,共计93M,每个文件可以在136b到956K之间加权。我需要从这些制表符分隔文件(* .tsv)中读取数据

当我从ftp服务器下载文件时,我正考虑将它们附加到一个文件中(以避免打开和关闭文件)。 要打开和读取任何文件,我使用以下函数:

def read_file(file_):
    with open(file_) as f:
        for line in f:
            yield line.split("\t")

提高性能是否是一个好主意?

2 个答案:

答案 0 :(得分:1)

是的,将内容连接到单个文件中可以提高性能 - 如果没有其他原因,因为这样可以使内容流水线化。

检索一系列文件需要大量的请求/响应对;当服务器正在等待来自客户端的新命令时,否则可能会浪费的带宽被浪费,除非增加了显着的复杂性和逻辑以避免这种情况(例如,运行多个并发FTP连接)。

相比之下,检索大文件允许服务器不断发送内容,直到它从客户端丢失ACK(告诉它减慢速度)。这将显着提高吞吐量。

答案 1 :(得分:0)

我认为这些人已经在效率方面回答了你的问题。我只想添加以下内容:

要打开和读取目​​录/文件夹中的文件,您可以使用以下代码。 希望这能得到一些帮助。

import glob
output = r"path\to\file\i\want\to\write\too\output.txt"
with open(output, 'w') as outfile:
    for file_name in glob.glob("/path/to/folder/containing/files/*.txt"):
        with open(file_name) as infile:
            outfile.write(infile.read())