2013-04-25 32 views
2

我正在逐行讀取文件(32行是二進制),然後存儲在名爲regFile[i]的變量中。現在我必須爲變量regFile[i]= 000000001000000000000中的每行R0分配一個名稱。我如何分配到我的regFile[i]中的每一行?這是我的一段代碼。爲從文件讀取的行分配名稱

def regread(filename): 

     file = open (filename, 'r') 
     regline = file.readlines() 

     reg= regline 
     reg= map(lambda s: s.strip(), reg) 

     for i in range(0,32): 
      regFile[i] = int(reg[i]) 
       'R'i = regFile[i] 
       print 'R' ,i 
     file.close() 

回答

4

我不明白爲什麼要命名一個變量 - 只是指數爲regFile ...以下是寫你所擁有的(使用islice確保的Python的方式最多32行讀和int(line, 2)從二進制整數)轉換......

from itertools import islice 

with open('somefile') as fin: 
    reg_file = [int(line, 2) for line in islice(fin, 32)] 

print reg_file[0], reg_file[31] 

由於@mgilson指出 - 如果你真的想你可以把它們放到一個dict

reg_file = {'R{}'.format(idx):int(line, 2) for idx, line in enumerate(islice(fin, 32))} 
+0

我想保存爲R0 =第1行,R1 =第2行,R2 =第2行..因爲我必須在某些彙編指令中使用,例如:ADD R3,R2,R1。因此,我可以打電話給我可以給我這些價值的重讀功能。 – user2319906 2013-04-25 13:38:52

+0

@ user2319906 - 然後將它們放入字典中:'{'R'+ str(i):x for i,x in enumerate(reg_file)}' – mgilson 2013-04-25 13:41:41

+0

from itertools import islice with open('reg.txt' )as fin: reg_file = [line.strip()for line in islice(fin,32)] while i <= len(0,32): \t dic = {'R'+ str(i):x對於我,枚舉(reg_file)中的x} \t print「dic ['R']:」,dic ['R']我得到錯誤:無效synatx錯誤爲 – user2319906 2013-04-25 13:53:56