0

我的程序有一个包含不同选项的菜单。如果您选择l,否则L它将加载 packages.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 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.")

请注意我with语句的使用,它更具可读性并确保文件正确关闭,即使您有异常也是如此。

于 2012-05-06T08:00:16.160 回答