2013-09-27 113 views
0

我有一個文本文件,它有三行。 我想讀取這三行作爲 L1,L2和L3,並計算L1,L2和L3的字符 爲n1,n2和n3。我嘗試 如下:讀取文件並分別獲取文件的每一行

 f=open(sys.argv[1],'r') 
    L1=f.readline() 
    L2=f.readline() 
    L3=f.readline() 
    if L1[-1]=='\n': L1=L1[:len(L1)-1] 
    if L2[-1]=='\n': L2=L2[:len(L2)-1] 
    if L3[-1]=='\n': L3=L3[:len(L3)-1] 
    n1=len(L1); n2=len(L2); n3=len(L3) 
    print L1, n1, L2, n2, L3, n3 

上述腳本工作正常。但我想知道是否有更好/更容易獲得L1,L2和L3的方法。提前致謝!

回答

1

如何:

with open(sys.argv[1]) as f: 
    L1, L2, L3 = (line.rstrip() for line in f.readlines()[:3]) 

但你真的應該使用列表...

0

我認爲最好的方法是嘗試把它們放入一個數組中。我不使用Python,但是那是什麼病做C++

0

肯定..

lines = [] 
with open(sys.argv[1], "r") as file: 
    for line in file.readlines(): 
     if line[-1] == "\n": 
      line = line[:-1] 
     lines.append(line) 

這樣,它不會不管你有多少行有你的文件。你的程序仍然會運行直到結束

0

我在stackoverflow中搜索並找到了一個更簡單的代碼。 它保存內容到一個數組:

with open(fname) as f: 
    content = f.readlines() 

如果要剝去\ N:

with open(fname) as f: 
    content = [line.strip() for line in f] 
1

,你可以:使用的try-catch IO錯誤的

  • 添加異常處理任何打開文件並從中讀取的問題。請參閱Errors and Exceptions Tutorial - 或使用with語句更新版本的Python,如其他答案所示。
  • 使用try-catch IndexError添加異常處理來處理沒有足夠參數的情況。
  • 爲簡潔起見,請使用string.rstrip或string.strip檢查換行符。
  • 按照其他答案的建議將值存儲在數組中(您可能希望在3行後終止以防萬一得到錯誤的文件並最終將大文件讀入內存)。