如何在Python3.x中使用嵌套for循环从文本文件一次打印一行,x个循环数?

2024-09-24 08:30:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个文本文件打印一行一次,无论我需要多少周期。我被困在这里:

    def do():
        i = 0
        for i in range(int(mlt)):
            file = open('/some/dir/text.txt' , 'r')
            for line in file:
                linenumber = file.readline()
                time.sleep(1)
                print(linenumber)

    mlt = input('number of cycles')
    do()

这将输出到:

    line2

    line4

    line6

    line8

    line10

    line2

    line4
    ....

当我需要时:

    line1

    line2

    line3

    line4

    line5

    line6

    line7

    line8

    line9

    line10

    line1

    line2

    line3
    ...

如果有人能向我解释我做错了什么,我将不胜感激。你知道吗


Tags: infordefdofile文本文件line1mlt
2条回答

for line in file:linenumber = file.readline()都在做同样的事情,这就是为什么你会得到每一行。请尝试以下操作:

     for line in file:
            time.sleep(1)
            print(line)

你用for line in file:在文件上迭代,但是在每次迭代中你用readline()抓住下一行,结果每隔一行打印一次。双空格是因为print()有一个默认的换行符结尾。要解决此问题,只需打印文件中的每一行,不使用额外字符:

def do(num):
    for i in range(num):
        with open('/some/dir/text.txt' , 'r') as file:
            for line in file:
                time.sleep(1)
                print(line, end='')

mlt = input('number of cycles')
do(int(mlt))

我还对您的代码进行了一点重构,以便该函数接受一个表示它应该循环的次数的参数。你知道吗

相关问题 更多 >