简体   繁体   中英

python try except not working

# Test your program with the following:
# Case 1: When the user inputs 84, the program should delete the file 84.txt
# Case 2: When the user inputs 84 (again), the program should print a File Not Found error message
# Case 3: When the user inputs 5, the program should delete the file 5.txt
#TODO: Your code goes here
def FileDel(x):
    path = "/home/nbuser/library/parent_dir/files_exercises"
    ls = os.listdir(path)
    for i in ls:
        if x==i:
            os.remove(i)
            print(x,"removed")
        elif x.isdigit():
            x1=x+".txt"
            if x1==i:
                os.remove(i)
                print(x1,"removed")
        else:
            try:
                os.remove(i)
            except FileNotFoundError as exception_object:
                print("Cannot find file: ", exception_object)
            except PermissionError as exception_object:
                print("Cannot delete a directory: ", exception_object)
            except Exception as exception_object:
                print("Unexpected exception: ", exception_object)
                c_path = os.path.join(path, i)              


x=input("enter a file no. that you want to del,e.g. 5 or 5.txt: ")                    
FileDel(x)

enter a file no. that you want to del,e.g. 5 or 5.txt: 88
88.txt removed
Unexpected exception:  [Errno 21] Is a directory: 'dir_1'

the instruction above asks to remove a file first, then when you remove the same file for the second time, returns files not found. however, my code prints everything together for the first time, for the second remove, it prints:

enter a file no. that you want to del,e.g. 5 or 5.txt: 88
Unexpected exception:  [Errno 21] Is a directory: 'dir_1'

please help!

I would write the code in a bit slightly different way:

def FileDel(x):
    path = "/home/nbuser/library/parent_dir/files_exercises"
    ls = os.listdir(path)
    try:
        if str(x).isdigit():
            os.remove(path + '\\' + str(x) + ".txt")
            print(x, "removed")
        else:
            os.remove(path + '\\' + str(x) )
            print(x, "removed")

    except OSError as exception_object:
        print("Cannot find file: ", exception_object)
    except PermissionError as exception_object:
        print("Cannot delete a directory: ", exception_object)
    except Exception as exception_object:
        print("Unexpected exception: ", exception_object)
        c_path = os.path.join(path, i)


x=raw_input("enter a file no. that you want to del,e.g. 5 or 5.txt: ")
FileDel(x)

You can use anyway os.path.exists(path) which tells you in advance if the path/file exists or not

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM