2012-05-06 142 views
0

我的程序有一個帶有不同選項的菜單。 如果您選擇lL它將加載packages.txt文件。這工作正常。檢查是否加載了.txt文件

if option.upper() == 'L': 
     f = open("packages.txt", "r") 

然後,如果你選擇dD(d顯示),它應該檢查是否該文件被加載,然後顯示(「打印」)的文件中給出的信息。

if option.upper() == 'D': 
    if open("packages.txt", "r"): 
     a = [] 
     for line in f: 
      a.append(line) 
      print(line) 

    if open("packages.txt", "r"): 
     print("fail") 

這是我寫的代碼,打印和顯示工作正常,但我不能讓我的頭圍繞if文件打開語句。

回答

3

這裏的問題是你再次打開該文件,而不是檢查現有文件:

f = None 

... 

if option.upper() == 'L': 
    f = open("packages.txt", "r") 
elif opetion.upper() == 'D': 
    if f and not f.closed: 
     ... 
    else: 
     print("File not opened.") 

請注意,這通常是一個壞主意。在需要時打開文件是一個更好的主意。

所以,更好的選擇是這樣的:

selected = option.upper() 
filename = None 

if selected == "L": 
    filename = "packages.txt" 
elif selected = "D": 
    if filename: 
     with open(filename, "r") as f: 
      ... 
    else: 
     print("The file to display has not been selected.") 

注意我用的the with statement,這是更具可讀性,並確保文件正確關閉,即使你有一個例外。

+0

這確實是一個更好的設計。 – Jeremy