2012-12-03 36 views
1

我想弄清楚如何使用一個類來讀取文件中的輸入,以便我可以在其他類中使用該數據。如果我從文件讀取輸入到列表中,是否應該將其傳遞給另一個需要使用該信息的類?我應該如何在Python中使用文件讀取器類?

現在我有:

import sys 

class FileReader: 
    """Reads a file""" 
    def __init__(self): 
     input = '' 
     try: 
      with open(sys.argv[1], 'r') as inFile: 
       input = inFile.readline() 
       print(input) 
     except IndexError: 
      print("Error - Please specify an input file.") 
      sys.exit(2) 

def main(): 
    x = FileReader() 

if __name__ == "__main__": 
    main() 

我想過做一些類型的列表從文件持有字符串,但我不知道這是否應該是全球性與否。

+3

不要將你的類綁定到命令行參數 - 你應該爲'__init__'添加一個file_path參數並傳入'sys.argv [1]'或者獲得一個文件路徑, 'FileReader' – YXD

+0

也不要捕捉異常,只需調用'sys.exit()' - 讓調用代碼捕獲異常並決定要做什麼。你可以重新提出一個更具信息性的例外情況,而不是打印一條錯誤信息(不知道這裏有什麼規範) – YXD

+0

@MrE謝謝你的提示!爲什麼我不應該將我的課程與命令行參數綁定?我不確定我是否理解了原因。 – Ci3

回答

2

如果你想要做的就是逐行讀取文件,像下面這樣的東西就可以正常工作(省略了異常處理)。

>>> path = '/path/to/file.txt' 
>>> with open(path, 'r') as f: 
...  lines = [l for l in f] 

然後,您可以繞過lines是必要的。

相關問題