0

私のプログラムには、さまざまなオプションのメニューがあります。lまたは選択しLた場合、packages.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")

それは私が書いたコードです。印刷と表示は正常に機能しますが、if file openステートメントについて頭を悩ませることはできません。

4

1 に答える 1

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.")

statementの使用に注意してwithください。これにより、例外が発生した場合でも、読みやすくなり、ファイルが適切に閉じられます。

于 2012-05-06T08:00:16.160 に答える