【发布时间】:2020-05-01 13:04:40
【问题描述】:
我有一个大型数据库作为文本文件(大约 1GB),我试图将信息行作为一行,以便能够对这些行进行一些数据分析。数据库格式如下
>Title 1 Line
Data 1 Line
Data 1 Line
Data 1 line
>Title 2 Line
Data 2 Line
Data 2 Line
Data 2 Line ....
我希望我的输出是
>Title 1 Line
Data 1 Line
>Title 2 Line
Data 2 Line
这是我的代码:
#opening document using open
Data = open("Dataset.txt", "r")
#defining file name for lines
protein = Data.readlines()
#variable defining for rewrite
proteinfinal = ""
for line in protein:
if ">" in line:
proteinfinal += line
else:
proteinfinal += line.strip("/n")
#removing final and last to remove lines
#print(proteinfinal.strip())
#closing file
Data.close()
# Make a new file
Data = open("Dataset.txt", "w")
#write to file
Data.write(proteinfinal)
#close file
Data.close()
有没有办法让它更快地运行这已经运行了一段时间,并且代码在几分钟内就可以在数据集的较小子集(10,000)行上运行。
【问题讨论】:
-
是的,不要使用
protein = Data.readlines(),直接遍历文件对象for line in data: ...,然后,*不要使用连接来增长字符串。即不要使用proteinfinal += line,使用列表proteinlist = [],然后*在循环中追加到该列表,最后在循环结束时使用proteinfinal = ''.join(proteinlist) -
你使用的是什么 Python 实现和版本?
标签: python python-3.x