Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x receiursivley读取文件的行_Python 3.x - Fatal编程技术网

Python 3.x receiursivley读取文件的行

Python 3.x receiursivley读取文件的行,python-3.x,Python 3.x,我想在每次运行程序时读取文件的特定行 假设一个文本文件 line 1 line 2 line 3 line 4 line 5 line 6 我希望每次运行文件时,都能读取文件的每三行 with open("test.txt", "r+") as f: for line in f: line = f.readline() #do something with line 上面的代

我想在每次运行程序时读取文件的特定行

假设一个文本文件

   line 1
   line 2
   line 3
   line 4
   line 5
   line 6
我希望每次运行文件时,都能读取文件的每三行

    with open("test.txt", "r+") as f:
         for line in f:
             line = f.readline()
               #do something with line
上面的代码只读取第一行,或者它只选择要读取的行,我希望是具体的。每三行。 Enumerate确实允许我阅读特定的行,但随后的问题是逐个评估它们。 我该怎么做?

以下是一个示例:

def _read(file, step, start=0):
    with open(file, "r") as f:
        for line in f.readlines()[start::step]:
            print(line.strip())

_read('test.txt', 3, 2)
输出:

line 3
line 6
line 9
line 3
line 6
line 9
No more lines
None
No more lines
None
下面是

class Reader:
    def __init__(self, file_name, mode='r', start=0, step=1):
        self.file = open(file_name, mode)
        self.lines = self.file.readlines()[start::step]
        self.file.close()

    def get_line(self):
        if self.lines:
            return self.lines.pop(0).strip()
        else:
            print('No more lines')

r = Reader('test.txt', start=2, step=3)

print(r.get_line())
print(r.get_line())
print(r.get_line())
print(r.get_line())
print(r.get_line())
输出:

line 3
line 6
line 9
line 3
line 6
line 9
No more lines
None
No more lines
None

对f.read().split('\n')中的行使用
,readline是一个生成器此读取整个文件您在读取每三行或处理每一行时是否有问题?我可以读取每三行并打印它。但我不只是想把它打印出来,我也想对它进行评估,比如说,也许从这行中找到某个单词。而这个,我想把每一行都打印出来谢谢。也可以单独评估阅读的每一行吗?@Thatile“评估每一行”是什么意思?该示例分别在每条线路上运行。