我怎样才能删除一个非常大的文本文件中的每一行?
How can I delete every second line in avery big text file?
我有一个非常大的文本文件,我想每隔一行就删除一次。我怎样才能有效地做到这一点?
我写过这样的代码:
_file = open("merged_DGM.txt", "r")
text = _file.readlines()
for i, j in enumerate(text):
if i % 2 == 0:
del text[i]
_file.close()
_file = open("half_DGM.txt", "w")
for i in text:
_file.write(i)
_file.close()
它适用于小文本文件。但对于大文件,它将整个文本加载到变量中。 10分钟后无法解决问题。
如有任何建议,我们将不胜感激。
file object returned by open iherits from io.IOBase and can be iterated。通过直接迭代文件,您可以避免将整个文件一次加载到内存中。
with open("merged_DGM.txt", "r") as in_file and open("half_DGM.txt", "w") as out_file:
for index, line in enumerate(in_file):
if index % 2:
out_file.write(line)
我有一个非常大的文本文件,我想每隔一行就删除一次。我怎样才能有效地做到这一点?
我写过这样的代码:
_file = open("merged_DGM.txt", "r")
text = _file.readlines()
for i, j in enumerate(text):
if i % 2 == 0:
del text[i]
_file.close()
_file = open("half_DGM.txt", "w")
for i in text:
_file.write(i)
_file.close()
它适用于小文本文件。但对于大文件,它将整个文本加载到变量中。 10分钟后无法解决问题。
如有任何建议,我们将不胜感激。
file object returned by open iherits from io.IOBase and can be iterated。通过直接迭代文件,您可以避免将整个文件一次加载到内存中。
with open("merged_DGM.txt", "r") as in_file and open("half_DGM.txt", "w") as out_file:
for index, line in enumerate(in_file):
if index % 2:
out_file.write(line)