2012-12-03 79 views
-1

我想創建一個新的功能如何調用另一個函數

def new_func(abc): 
with open(APPROVAL_BALLOT_FILENAME) as f: 
     while True: 
      line = f.readline() 
      if line: 
       lines.append(line) 
      else: 
       break 

,做 new_func(feklfe)

會怎麼做呢? 當我這樣做時,由於某些原因,行不會被定義。

回答

0

你必須正確地定義lines裏面的功能:

def new_func(abc): 
    lines = [] 
    with open(APPROVAL_BALLOT_FILENAME) as f: 
    while True: 
     line = f.readline() 
     if line: 
      lines.append(line) 
     else: 
      break 
    return lines 

,你可能還需要什麼,使用的文件名作爲參數傳遞給你的函數。像這樣:

def new_func(filename): 
    lines = [] 
    with open(filename) as f: 
    while True: 
     line = f.readline() 
     if line: 
      lines.append(line) 
     else: 
      break 
    return lines 
+0

但是然後在option_plurality(lines)中。那麼函數option_plurality的行就會變得不確定。我真的很困惑 – user1870662

+0

考慮創建一個簡約的例子。只有你的'new_func'和一行來調用該函數並打印輸出。那對你有用嗎? – user1251007

+0

我還沒有定義全局名稱'行'。但如果我把所有東西放在一個函數中,它就可以工作 – user1870662

0

您的功能失敗,因爲您沒有在其中的任何位置定義lines。但是你的代碼的主要問題是你試圖用while循環讀取一個文件,這是用python讀取文件的最糟糕的方式,至少如果你對這些行進行的操作是將它們存儲在一個列表中。

該文件對象已經有一個函數返回其行的列表,適當地命名爲readlines。更好的是,文件對象是所有行的迭代器;這意味着所有你需要做的事情是去掉它們的換行符清單,這是一個簡單的表達式:

with open(filename) as f: 
    lines = [line.rstrip("\n") for line in f] 
相關問題