通过文件读取并逐行打印python

时间:2017-05-12 02:59:20

标签: python

我有一个文件,每行写有不同的行星。我试图使用with函数进行迭代并打印,因此输出如下所示:

1 - mercury
2 - venus 
etc...

但我的输出目前看起来像这样:

(1, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>)
(2, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>)
(3, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>)
(4, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>)

我的代码是:

with open("planets.txt") as p:
    i=0
    for line in p:
        i += 1
        print(i, '-', p)

我如何使用错误或者其他什么?

3 个答案:

答案 0 :(得分:1)

而不是打印line您打印p - 文件本身:

    print(i, '-', p)

此外,您可以使用enumerate功能:

,而不是使用新变量来计算行数
with open("planets.txt") as p:
    for i, line in enumerate(p, 1):
        print(i, '-', line)

UPD:您还应该考虑这样一个事实:您从文件中获取的line以换行符结尾,当您print(line)之后,它会添加另一个换行符它由defaulf。所以你的输出看起来像这样:

1 - mercury

2 - venus 

etc...

获取

1 - mercury
2 - venus 
etc...

您需要为打印功能指定end=''参数。这样:

        print(i, '-', line, end='')

答案 1 :(得分:0)

您要打印line而不是p

with open("planets.txt") as p:
    i=0
    for line in p:
        i += 1
        print(i, '-', line) #refers to each line in p rather than the file handler

答案 2 :(得分:0)

您应该将print(i, '-', p)更改为print(i, '-', line)