2016-08-05 95 views
0

在Python中聲明一個字符串與讀取它們的值之間有什麼區別(如果有的話)?閱讀與聲明字符串蟒蛇之間的區別

我有一段我的代碼的代碼看起來像:

file = open('comport.txt','r') 

for line in file: 
    if "comport" in line: 
     comport = line[9:] 

和文本文件只是看起來像:

comport= COM1 

當我嘗試打開一個串口,我做:

ser = serial.Serial(comport,baudrate=115200) 

不工作(一堆錯誤),但這個工程:

comport = 'COM1' 
ser = serial.Serial(comport,baudrate=115200) 

我試圖把引號的文本文件,並且沒有任何工作,我敢肯定,我正確地分割我太行,因爲當我嘗試打印,其打印COM1

+1

也許還有一個'\ N'後'COM1' –

+0

我想你在file.readlines意思'線路():'此外,你應該使用'file'作爲變量名不要,這是一個內置的python。 – Will

+1

@Will:no,文件對象是可迭代的,根據需要使用緩衝區生成行,這是內存高效的),使用'file.readlines()'而不是將所有行首先讀入內存,並且不是一個好主意** 。 'file'是Python 2中的類型名稱,在Python 3中,該名稱已不存在;因爲它很少被使用,所以它不會掩蓋它。不過,最好把它命名爲別的東西。 –

回答

2

可能"COM1"之後仍然有一個換行\n。試試這個:

comport = line[9:].strip() 

或本:

comport = line.split("=")[1].strip() 

此外,你應該使用with打開和關閉文件,並且不使用file作爲變量名。

with open('comport.txt','r') as f: 
    for line in f: