gpt4 book ai didi

python - 连接和重新排列文件的最有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:54 26 4
gpt4 key购买 nike

我正在阅读几个文件,每个文件分为两部分,首先是几千行的标题部分,然后是几千行的正文。我的问题是我需要将这些文件连接成一个文件,其中所有标题都在顶部,然后是正文。

目前我正在使用两个循环:一个是拉出所有的文件头并写入它们,第二个是写入每个文件的主体(我还包括一个 tmp_count 变量来限制在转储到文件之前要加载到内存中的行)。

这非常慢 - 13gb 文件大约需要 6 分钟。谁能告诉我如何对此进行优化,或者是否有更快的方法在 python 中执行此操作?

谢谢!

这是我的代码:

def cat_files_sam(final_file_name,work_directory_master,file_count):

final_file = open(final_file_name,"w")

if len(file_count) > 1:
file_count=sort_output_files(file_count)

# only for @ headers
for bowtie_file in file_count:
#print bowtie_file
tmp_list = []

tmp_count = 0
for line in open(os.path.join(work_directory_master,bowtie_file)):
if line.startswith("@"):

if tmp_count == 1000000:
final_file.writelines(tmp_list)
tmp_list = []
tmp_count = 0

tmp_list.append(line)
tmp_count += 1

else:
final_file.writelines(tmp_list)
break

for bowtie_file in file_count:
#print bowtie_file
tmp_list = []

tmp_count = 0
for line in open(os.path.join(work_directory_master,bowtie_file)):
if line.startswith("@"):
continue
if tmp_count == 1000000:
final_file.writelines(tmp_list)
tmp_list = []
tmp_count = 0

tmp_list.append(line)
tmp_count += 1
final_file.writelines(tmp_list)

final_file.close()

最佳答案

您预计移动 13Gb 数据的速度有多快?这个问题是 I/O 绑定(bind)的,而不是 Python 的问题。要使其更快,请减少 I/O。这意味着您要么 (a) 坚持现有的速度,要么 (b) 应该重新调整工具链的后续元素以就地处理文件,而不是需要一个巨大的 13 Gb 文件。

关于python - 连接和重新排列文件的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2508610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com