gpt4 book ai didi

python - 从文件python中写入特定行

转载 作者:太空宇宙 更新时间:2023-11-04 06:02:35 24 4
gpt4 key购买 nike

我有两个文件,其中一个文件有一个基因座列表 (Loci.txt)(准确地说大约有 1600 万个),在第二个文件中我有一个行号列表(Pos.txt)。我想要做的是仅将 Loci.txt 中在 Pos.txt 文件中指定的行写入新文件。以下是两个文件的截断版本:

轨迹.txt

R000001 1
R000001 2
R000001 3
R000001 4
R000001 5
R000001 6
R000001 7
R000001 8
R000001 9
R000001 10

正文.txt

1
3
5
9
10

这是我为任务编写的代码

#!/usr/bin/env python

import os
import sys

F1 = sys.argv[1]
F2 = sys.argv[2]
F3 = sys.argv[3]

File1 = open(F1).readlines()
File2 = open(F2).readlines()
File3 = open(F3, 'w')
Lines = []

for line in File1:
Lines.append(int(line))

for i, line in enumerate(File2):
if i+1 in Lines:
File3.write(line)

代码完全按照我想要的方式运行,输出如下所示

输出.txt

R000001 1
R000001 3
R000001 5
R000001 9
R000001 10

问题是,当我将它应用于我的整个数据集时,我必须从一个包含 1600 万行的文件中提取大约 1300 万行,这需要很长时间才能完成。无论如何我可以编写这段代码以便它运行得更快吗?

最佳答案

你的代码很慢,主要是因为你在列表中搜索是否必须打印行:if i+1 in Lines。每次您的程序扫描完整列表以查找行号是否在中时。
您可以替换:

Lines = []

for line in File1:
Lines.append(int(line))

通过:

Lines = {}

for line in File1:
Lines[int(line)] = True

关于python - 从文件python中写入特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24031794/

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