Python删除文件

Python删除文件,python,for-loop,python-os,Python,For Loop,Python Os,我现在很难使用for循环来删除哈希数据库中哈希匹配的文件 我可以成功删除一个匹配的图像,但当删除更多图像时,它会尝试删除刚删除的图像,然后导致程序崩溃。我不知道它为什么这样做,任何帮助都将不胜感激 def checkImage(): database_file = "hash_database.txt" for filename in os.listdir('NewImages//'): upload = file_path + '\\' + filename

我现在很难使用for循环来删除哈希数据库中哈希匹配的文件

我可以成功删除一个匹配的图像,但当删除更多图像时,它会尝试删除刚删除的图像,然后导致程序崩溃。我不知道它为什么这样做,任何帮助都将不胜感激

def checkImage():
database_file = "hash_database.txt"

for filename in os.listdir('NewImages//'):
    upload = file_path + '\\' + filename
    print(filename)

# Get hash of each image
for filename in os.listdir('NewImages//'):
    new_images = imagehash.phash(Image.open('NewImages//' + filename))

    with open(database_file) as checkingHash:
        if str(new_images) in checkingHash.read():
            print("Delete this image, hash is already in database")
            os.remove(upload)
        else:
            with open(database_file, "a") as databaseFileWrite:
                databaseFileWrite.write(str(new_images) + " " + filename + "\n")
FileNotFoundError:[WinError 2]系统找不到指定的文件:“C:\Users\myalt\OneDrive\Desktop\Python项目\Hashing\NewImages\image4.png”

编辑:

在进一步查看之后,我发现它是因为我的第一个for循环将要删除的文件设置为目录中的最后一个图像。所以第二个for循环只是不断尝试删除最后一个图像


我现在知道这个问题了,我只是不知道如何解决这个问题。

为什么有两个循环?在第二个循环中,如果您决定删除该文件,则需要删除第二个循环正在处理的当前文件,而不是第一个循环正在处理的最终文件。那么,缩进是否正确?谢谢@jasonharper我现在已经解决了此问题。我删除了第一个for循环,只使用了第二个。图例。当文件仍以读取模式打开时,您尝试以追加模式打开该文件。这可能会产生一些有趣的结果。这会有什么影响?到目前为止似乎还有效