2013-05-12 38 views
1

我想用python讀取串口,並用readline打印結果,但是我在所有結果行之間都得到空行。你能告訴我如何刪除所有空行嗎?Python readline空行

我的代碼:

#!/usr/bin/python 

import serial 
import time 
import sys 

ser = serial.Serial("/dev/ttyACM0", 9600) 

print ser.readline() 
print ser.readline() 
print ser.readline() 
print ser.readline() 
print ser.readline() 

我試圖從後面幾個答案,但還是得到了空行。我的txt文件看起來像:

T: 59.30% 22.20 8% 11% N 

T: 59.80% 22.20 8% 11% N 

T: 59.80% 22.20 8% 11% N 

T: 59.80% 22.20 8% 11% N 

,但我需要的文件,如:

T: 59.30% 22.20 8% 11% N 
T: 59.80% 22.20 8% 11% N 
T: 59.80% 22.20 8% 11% N 
T: 59.80% 22.20 8% 11% N  

編輯:

找到辦法來解決這個問題:

line = ser.readline().decode('utf-8')[:-2] 

現在工作正常。這-2刪除/ n,這就是全部。

+0

你好。你需要一個文件或顯示文件嗎? – eyquem 2013-05-12 17:44:57

+0

我需要從串行(2秒)讀取,並寫入文件沒有空行。 – 2013-05-12 18:03:46

+0

是** serial ** form ** pyserial 2.6 **(https://pypi.python.org/pypi/pyserial/2.6)?在寫錯之前,我嘗試瞭解** ser **的本質。它似乎不是一個文件,是嗎? – eyquem 2013-05-12 18:07:28

回答

1

或者:

import serial 

with serial.Serial("/dev/ttyACM0", 9600) as ser: 
    for line in ser: 
     print line.rstrip('\n') 

import serial 

with serial.Serial("/dev/ttyACM0", 9600) as ser: 
    for line in ser: 
     print line, 
+0

不工作,仍然有空行 – 2013-05-12 17:22:39

+0

@ŁukaszKluczny:固定 – Eric 2013-05-12 20:05:51

1
while True: 
    line = ser.readline() 
    if not line.strip(): 
     continue 
    do_something_with(line) 
0

根據these tips,這應該這樣做:

import serial 

ser = serial.Serial("/dev/ttyACM0", 9600) 

while True: 
    line = ser.readline() 
    if line: 
     print(line) 
+0

不工作,仍然有空行 – 2013-05-12 17:23:22