Python:file.readline在行尾添加一个空格

时间:2013-02-26 01:32:54

标签: python

使用python读取平面空格填充的文本文件。文本文件验证的一部分是文本文件中的每一行都应该是一个特定的文件长度,包括空格填充。

当我使用下面的代码时,python最终会给我一个额外空格的行。例如。我希望fileX中的所有行都有143个字符。 Python虽然会将其读作144个字符,因此说该文件无效。如果我在VB.NET中做同样的事情,我会得到正确的143个字符。

为什么 Python&#39> readline函数添加了额外的字符? (使用python 3.2)

import io
myfile = open("file_path", "r")
while True:
    line = myfile.readline()
    if not line:
            break
    print(len(line))  #This prints 144 characters

VB.NET 给出了143个字符的正确长度。

Using objStreamReader As StreamReader = New StreamReader(myFilePath)
    While objStreamReader.EndOfStream = False
            line = objStreamReader.ReadLine
            len(line)   'This returns the correct length of 143.

使用line.strip将不是正确的机制,因为我可能会删除有用的空格。请记住,文件的空间填充最大为给定长度。

3 个答案:

答案 0 :(得分:5)

objStreamReader.ReadLine chops off the terminating newline,而Python的file.readline keeps it

如果您的文件是以文本模式打开的(除非您明确指定,否则),行结尾将始终为空(仅限最后一行)或仅为\n,您可以安全地切关闭rstrip('\n')

答案 1 :(得分:0)

第144个字符是换行符。

with open("file_path") as file:
    for line in file:
        line = line.rstrip("\n") # strip newline
        print(len(line)) # should print 143 

答案 2 :(得分:0)

使用列表理解,您可以按照以下步骤进行操作:

def readfile():
    with open(filename, 'r') as fh:
        lines = [line.rstrip('\n') for line in fh.readlines()]
        for line in lines:
            print (line)