如何将try块的文件指针访问到else块python中

如何将try块的文件指针访问到else块python中,python,Python,在下面的程序中,我在try块之外声明了fptr,因为我想将文件关闭到else块中。但获取“AttributeError:‘NoneType’对象没有属性‘close’”。在这种情况下,如何关闭在try块中打开的文件 def openFile(fileName): fptr = open(fileName,"r") fptr.close() def creatNewFile(): fileName = input("Enter file name : ") fpt

在下面的程序中,我在try块之外声明了fptr,因为我想将文件关闭到else块中。但获取“AttributeError:‘NoneType’对象没有属性‘close’”。在这种情况下,如何关闭在try块中打开的文件

def openFile(fileName):
    fptr = open(fileName,"r")
    fptr.close()

def creatNewFile():
    fileName = input("Enter file name : ")
    fptr = open(fileName,"w")
    fptr.close()

def main():
    fileName = input("Enter file name with extension: ")
    fptr = 0
    try:
        fptr = openFile(fileName)
    except Exception as ex:
        print("File is not exist")
        choice  = input("Do you want to create new file(Y/N)")
        if((choice == 'N') or (choice == 'n')):
            print("Exiting program");
            exit(0)
        elif((choice == 'Y' or choice == 'y')):
            creatNewFile()

        else :
            print("Invalid choice, exiting program ")
    else:               
        fptr.close();

main()

您没有在openFile()createNewFile()中返回文件对象

试试这个:

def openFile(fileName):
    fptr = open(fileName, "r")
    return fptr


def creatNewFile():
    fileName = input("Enter file name : ")
    fptr = open(fileName, "w")
    return fptr


def main():
    fileName = input("Enter file name with extension: ")
    fptr = 0
    try:
        fptr = openFile(fileName)
        fptr.close()
    except Exception as ex:
        print("File is not exist")
        choice = input("Do you want to create new file(Y/N)")
        if ((choice == 'N') or (choice == 'n')):
            print("Exiting program")
            exit(0)
        elif ((choice == 'Y' or choice == 'y')):
            newfptr = creatNewFile()
            newfptr.close()
        else:
            print("Invalid choice, exiting program ")


main()