gpt4 book ai didi

python - 如何使用 sed -n 但在 Python 中从文本文件中提取一系列行?

转载 作者:行者123 更新时间:2023-11-28 22:39:21 25 4
gpt4 key购买 nike

假设我有一个 10GB 的文件,其中有 20,000 行填充了 pi 的数字。

  • 123123
  • 12312312
  • 123123
  • 123123
  • 12312312
  • 123123

如何使用 unix 命令 sed -n 提取第 10,000 到 20,000 行?

我希望使用下面的代码将带有换行符的每一行导出到一个文件中。

到目前为止,我有以下内容:

com = "sed -n \' " + str(window[0]) + "," + str(window[1]) + "p\' " + "sample.txt" + ">" + "output.txt"
os.system(com)

但它抛出连接错误。

我应该如何在下面的程序中为 Python 编写命令 sed -n

inputFileName = "sample.txt"

import itertools
import linecache


def sliding_window(window_size, step_size, last_window_start):
for i in xrange(0, last_window_start, step_size):
yield (i, i + window_size)
yield (last_window_start, total_pi_digits)

def PiCrop(window_size, step_size):

f = open(inputFileName, 'r')

first_line = f.readline().split()

total_pi_digits = int(first_line[0])

last_window_start = total_pi_digits-(total_pi_digits%window_size)

lastcounter = (total_pi_digits//window_size)*(window_size/step_size)

flags = [False for i in range(lastcounter)]

first_line[0] = str(window_size)
second_line = f.readline().split()
offset = int(round(float(second_line[0].strip('\n'))))
first_line = " ".join(first_line)

f. close()

with open(inputFileName, 'r') as f:
header = f.readline()

for counter, window in enumerate(sliding_window(window_size,step_size,last_window_start)):

with open('PiCrop_{}.txt'.format(counter), 'w') as output:

if (flags[counter] == False):
flags[counter] = True

headerline = float(linecache.getline(inputFileName, window[1]+1)) - offset
output.write(str(window_size) + " " + str("{0:.4f}".format(headerline)) + " " + 'L' + '\n')

com = "sed -n \' " + str(window[0]) + "," + str(window[1]) + "p\' " + "sample.txt" + ">" + "output.txt"
os.system(com)

PiCrop(1000,500)

最佳答案

您可以从文件中生成每一行:

def lines(filename):
with open(filename) as f:
for line in f:
yield line

您可以使用 islice 对序列进行切片:

from itertools import islice

with open('PiCrop.txt', 'w') as output:
for line in islice(lines('sample.txt'), 10000, 20001):
output.write(line)

关于python - 如何使用 sed -n 但在 Python 中从文本文件中提取一系列行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822573/

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