2013-02-26 88 views
1

我正在使用python讀取平坦的空格填充文本文件。文本文件驗證的一部分是文本文件中的每一行都應該是包含空格填充的特定文件長度。Python:file.readline在行尾添加一個空格

當我使用下面的代碼時,python最終給我一個額外的空間。例如。我期望fileX中的所有行都有143個字符。 Python雖然會將其讀爲144個字符,因此表示該文件無效。如果我在VB.NET中做同樣的事情,我會得到正確的143個字符。

爲什麼Python的 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不會是正確的機制,因爲我可能會擺脫有用的空間。請記住,文件空間填充達到最大給定長度。

回答

5

objStreamReader.ReadLinechops off the terminating newline,而Python的file.readlinekeeps it

如果您的文件在文本模式下打開(除非您明確指定,否則它是),行結束將始終爲空(僅限最後一行)或只有一個\n,您可以安全地將其切斷rstrip('\n')

0

第144個字符是換行符。

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