Я создал скрипт Python, который получает список файлов из текстового файла и удаляет их, если они пусты. Он правильно обнаруживает пустые файлы, но не хочет их удалять. Это дает мне:
(32, 'The process cannot access the file because it is being used by another process')
Я использовал два разных инструмента, чтобы проверить, заблокированы ли файлы или нет, и я уверен, что это не так. Я использовал sysinternals Process Explorer и LockHunter. Кроме того, я могу самостоятельно удалить файлы вручную. Я, очевидно, не хочу делать это для всех из них, поскольку в разных местах их сотни.
Сценарий:
import os.path
import sys
def DeleteFilesFromListIfBlank(PathToListOfFiles):
ListOfFiles = open(PathToListOfFiles)
FilesToCheck = [];
for line in ListOfFiles.readlines():
if(len(line) > 1):
line = line.rstrip();
FilesToCheck.append(line)
print "Found %s files to check. Starting check." % len(FilesToCheck)
FilesToRemove = [];
for line in FilesToCheck:
#print "Opening %s" % line
try:
ActiveFile = open(line);
Length = len(ActiveFile.read())
if(Length < 691 and ActiveFile.read() == ""):
print "Deleting %s" % line
os.unlink(line);
else:
print "Keeping %s" % line
except IOError,message:
print "Could not open file: $s" % message
except Exception as inst:
print inst.args
DeleteFilesFromListIfBlank("C:\\ListOfResx.txt")
Я пытался использовать os.unlink и os.remove. Я использую Python 2.6 на Vista64
Спасибо