我有20333个文件,共计93M,每个文件可以在136b到956K之间加权。我需要从这些制表符分隔文件(* .tsv)中读取数据
当我从ftp服务器下载文件时,我正考虑将它们附加到一个文件中(以避免打开和关闭文件)。 要打开和读取任何文件,我使用以下函数:
def read_file(file_):
with open(file_) as f:
for line in f:
yield line.split("\t")
提高性能是否是一个好主意?
答案 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())