Python删除文件
我现在很难使用for循环来删除哈希数据库中哈希匹配的文件 我可以成功删除一个匹配的图像,但当删除更多图像时,它会尝试删除刚删除的图像,然后导致程序崩溃。我不知道它为什么这样做,任何帮助都将不胜感激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
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循环,只使用了第二个。图例。当文件仍以读取模式打开时,您尝试以追加模式打开该文件。这可能会产生一些有趣的结果。这会有什么影响?到目前为止似乎还有效