2012-05-06 16 views
0

私のプログラムにはさまざまなオプションのメニューがあります。 lまたはLを選択すると、packages.txtファイルがロードされます。それはうまく動作します。.txtファイルが読み込まれているかどうかを確認する

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

あなたがdまたはD(表示用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") 

私が書いたコードを、印刷および表示作品罰金ですが、私があれば、ファイルのオープン文のまわりで私の頭を取得傾けます。

答えて

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

関連する問題