我是新来的,有一个问题。我对编程没有太多的了解,因为我只是一个初学者,所以我想拥有尽可能简单的答案。当然,我会尽力理解它们!而且英语不是我的母语。对我英语不好的人表示歉意。
我有a.txt
包含100行数据,描述如下:
import numpy as np
b = np.arange(0.005, 0.05, 0.0001)
c = np.arange(1.5, 2.51, 0.01)
with open('a.txt','w') as f:
for a in range(1,101):
f.write('{:<3d} {:<3f} {:<3f}\n'.format(a,b[a-1],c[a-1]))
a.txt上的数据如下:
1 0.005000 1.500000
2 0.005100 1.510000
3 0.005200 1.520000
4 0.005300 1.530000
5 0.005400 1.540000
6 0.005500 1.550000
7 0.005600 1.560000
8 0.005700 1.570000
....
97 0.014600 2.460000
98 0.014700 2.470000
99 0.014800 2.480000
100 0.014900 2.490000
现在,我只想选择从第10行到第10行的数据并将其写入另一个文本文件b.txt。我该怎么办?
为了简化起见,我现在正在处理一个非常小的文件,但是我想将来在一个非常大(例如几GB)的文本文件中执行此任务,所以我想知道完成任务的方式,也可以用来处理巨大的文件。
如果有我没有显示但有必要的信息,请告诉我。我会尽快添加它。
感谢您的帮助和您的宝贵时间。谢谢。
※感谢所有编辑我的帖子的人。它帮助并且将帮助我改善帖子。
答案 0 :(得分:1)
首先,您只能使用n
获得前itertools.islice
行,然后编写这些行:
from itertools import islice
n = 10
with open('a.txt', 'r') as infile, open('b.txt', 'w') as outfile:
first_lines = islice(infile, n)
outfile.writelines(first_lines)
答案 1 :(得分:0)
我从Read large text files in Python, line by line without loading it in to memory的公认答案中抢了这个:
with open("log.txt") as infile:
for line in infile:
do_something_with(line)
现在,解决您的具体问题:
def grab_lines(in_path, out_path, start, end):
with open(out_path, "w") as outfile:
counter = -1
with open(in_path) as infile:
for line in infile:
counter += 1
if counter < start:
continue
elif start <= counter <= end:
outfile.write(line)
else:
return
希望这会有所帮助!