奇怪的循环行为(python)

时间:2015-08-29 08:23:15

标签: python

我有这段代码:

class CleanUp:
    def __init__(self,directory):
        self.directory = directory

    def del_items(self,*file_extensions):
        """deletes specified file extensions in specificied directory"""

        removed_files = [file for file in os.listdir(self.directory) for ext in file_extensions if ext in file]
        for index ,file in enumerate(removed_files):
            print(str(index + 1) + ": " + file + "\n")
        confirm_delete = input("are you sure you want to delete all {0} files? y|n ".format(len(removed_files)))
        while confirm_delete.lower() not in ("y","n"):<--------- this while loop
            confirm_delete = input("are you sure you want to delete all {0} files? y|n ".format(len(removed_files)))
        if confirm_delete.lower() == "y":
            for file in removed_files:
                try:
                    os.remove(os.path.join(self.directory,file))
                except:
                    pass
            print("successfully deleted {0} files".format(len(removed_files)))
        else:
            print("deletion cancelled goodbye")
            pass




directory = input("please enter a directory ")
while not os.path.exists(directory):
    print("{0} is not a valid directory \n".format(directory))
    directory = input("please enter a directory ")

file_extensions = input("please put in file extensions of files that need deleting. seperate them by one space ")
file_extensions = file_extensions.split()
desktop = CleanUp(directory)
deleted_files = desktop.del_items(*file_extensions)

此行有效

while confirm_delete.lower() not in ("y","n"):

然而,当我尝试

while confirm_delete.lower() != "y" or confirm_delete.lower() != "n":

while循环永远不会通过。 我确定它与or有关但是 为什么这样做不起作用?

1 个答案:

答案 0 :(得分:3)

因为这种情况永远是真的;没有同时具有"y""n"的字符串值。请改用and