如何部分读取一个文本文件并将其写入另一个文本文件

时间:2019-01-13 06:57:28

标签: python python-3.x

我是新来的,有一个问题。我对编程没有太多的了解,因为我只是一个初学者,所以我想拥有尽可能简单的答案。当然,我会尽力理解它们!而且英语不是我的母语。对我英语不好的人表示歉意。

我想做的任务

我有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)的文本文件中执行此任务,所以我想知道完成任务的方式,也可以用来处理巨大的文件。

  • 如果有我没有显示但有必要的信息,请告诉我。我会尽快添加它。

感谢您的帮助和您的宝贵时间。谢谢。

※感谢所有编辑我的帖子的人。它帮助并且将帮助我改善帖子。

2 个答案:

答案 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

希望这会有所帮助!