读取行并循环遍历文件对象

时间:2012-12-07 17:52:59

标签: python

我正在尝试从文件中读取行并将其打印在循环中,但是我在每个打印语句后都会获得换行符。

这是我的班级

class FileReader:
    """Reads a file from args"""
    def __init__(self, args):
        input = ''
        with open(args, 'r') as rFile:
            for line in rFile:
                print(line)

我的输入文件是这样的。 ('$'是新行):

12 3$
2$
9$
5$
3 4$

我的输出变为:

12 3

2

9

5

3 4

我得到这些空间的原因是什么?

3 个答案:

答案 0 :(得分:3)

当您循环文件时,产生的行包括行尾的换行符。使用print()输出带有额外换行符的行。

您可以使用.strip()从该行的开头和结尾删除空格,包括换行符。

如果想要删除最后一行,请使用line[:-1]line.rstrip('\n')将其删除。

最后但同样重要的是,您还可以告诉print()不要添加换行符:

print(line, end='')

答案 1 :(得分:0)

每个print命令会在结尾处自动添加换行符。由于您的文件在每行末尾都有换行符(根据定义),您的程序将连续输出两个换行符。

例如,试试这个:

for i in xrange(10):
    print(str(i) + '\n')

您将获得与您的代码具有相同“问题”的内容。

如果要修复该行为,请将print(line)替换为print(line.rstrip()),这将从每行末尾删除所有空白字符。如果你的行以制表符或空格结尾,这可能会有问题;在这种情况下,请使用print line.rstrip('\n'),这只会删除换行符。

答案 2 :(得分:0)

如果您不想要新行,请使用rstrip。例如:

print(line.rstrip())