2016-05-31 62 views
2

我是新來的蟒蛇,我想讀取文件的每一行與逗號','分開的值。像這樣一行:參數來自變量?

435,567,897,905,6,56,22,90. 

我現有的代碼

#!/usr/bin/python 

class Line(): 
    def __init__(self, val1, val2, val3, val4, val5, val6, val7, val8): 
     self.val1 = val1 
     self.val2 = val2 
     self.val3 = val3 
     self.val4 = val4 
     self.val5 = val5 
     self.val6 = val6 
     self.val7 = val7 
     self.val8 = val8 

    def display(self): 
     print("CPU:",self.val1) 

file = open("/Users/user/Desktop/data.txt", 'r') 

for line in file: 
line = line.split(",") 
li = str(line)[1:-1] 
lin = Line(li) 
lin.display() 

file.close() 

data.txt是像下面。

435,567,897,905,6,56,22,90 
435,567,897,905,6,56,22,90 
435,567,897,905,6,56,22,90 
435,567,897,905,6,56,22,90 
435,567,897,905,6,56,22,90 
435,567,897,905,6,56,22,90 
435,567,897,905,6,56,22,90 
435,567,897,905,6,56,22,90 
435,567,897,905,6,56,22,90 

請幫助我如何打印第一個值,如CPU:值。

回答

0

要解壓縮在一個列表中的值到一個函數的所有參數(在這種情況下Line.__init__),使用*運營商,像這樣:

lin = Line(*li) 
1

您需要將每一個在每個項目lineLine構造函數。一種方法可以這樣寫:

li = Line(line[0], line[1], line[2], line[3], line[4], line[5], line[6], line[7])) 

但是這是很多寫作。 Python有一個捷徑:

li = Line(*line) 

這將做同樣的事情。

不知道爲什麼你使用str(line)[1:-1] ...

無論如何,這意味着你的代碼可以重新編寫的樣子也使用with聲明,將循環後自動關閉該文件如下:

class Line(): 
    def __init__(self, val1, val2, val3, val4, val5, val6, val7, val8): 
     self.val1 = val1 
     self.val2 = val2 
     self.val3 = val3 
     self.val4 = val4 
     self.val5 = val5 
     self.val6 = val6 
     self.val7 = val7 
     self.val8 = val8 

    def display(self): 
     print("CPU:", self.val1) 

with open("/Users/user/Desktop/data.txt", 'r') as file 
    for line in file: 
     line = line.split(",") 
     lin = Line(*line) 
     lin.display() 
+0

非常感謝,它像一個魅力工作 – viswa

+2

不客氣。請閱讀[_當某人回答我的問題時該怎麼辦?_](http://stackoverflow.com/help/someone-answers) – martineau