2015-02-10 118 views
3

我正在看一些書籍的源代碼,並注意到一些代碼似乎沒有在當前的Python2.7 API中。根據此代碼,模塊curses應該具有一個稱爲LINES的常量變量,另一個稱爲COLS。我打開了一個Python交互式終端,看到沒有COLSLINES變量或方法。Python詛咒 - 模塊'詛咒'沒有屬性'LINES'

我的問題是:該代碼如何工作?

def draw_loglines(self): 
     self.screen.clear() 
     status_col = 4 
     bytes_col = 6 
     remote_host_col = 20 
     status_start = 0 
     bytes_start = 4 
     remote_host_start = 10 
     line_start = 26 
     logline_cols = curses.COLS - status_col - bytes_col - remote_host_col - 1 
     for i in range(curses.LINES): 
      c = self.curr_topline 
      try: 
       curr_line = self.loglines[c] 
      except IndexError: 
       break 
      self.screen.addstr(i, status_start, str(curr_line[2])) 
      self.screen.addstr(i, bytes_start, str(curr_line[3])) 
      self.screen.addstr(i, remote_host_start, str(curr_line[1])) 
      #self.screen.addstr(i, line_start, str(curr_line[4])[logline_cols]) 
      self.screen.addstr(i, line_start, str(curr_line[4]), logline_cols) 
      self.curr_topline += 1 
     self.screen.refresh() 

回答

2

即代碼爲Python 3.寫你可以看到現在curses.LINES是API中,儘管它在Python 2.7是不是:

https://docs.python.org/3/howto/curses.html

如果您需要獲得終端Python 2中的寬度和高度,請參閱:How to get Linux console window width in Python

+1

如果我打開了一個Python3交互shell和進口'curses'然後鍵入'curses.LINES'我還收到一個錯誤。 :/謝謝你的迴應。 – 2015-02-10 03:20:10

+0

聖牛,我剛剛嘗試了Python 3.3,你說的對,它不起作用。也許3.4? – 2015-02-10 03:23:23

+1

我正在使用Python 3.2.3:/我可能必須嘗試升級。我正在閱讀的這本書於2008年出版,所以我懷疑他們使用的是Python 3000.:D感謝John的幫助。您鏈接的終端寬度和高度上的SO線程可能是我最好的選擇。 – 2015-02-10 03:31:05