【发布时间】:2009-06-05 05:18:55
【问题描述】:
我创建了一个 python 脚本,它从文本文件中获取文件列表并在它们为空时将其删除。它正确检测到空文件,但不想删除它们。它给了我:
(32, 'The process cannot access the file because it is being used by another process')
我使用了两种不同的工具来检查文件是否被锁定,并且我确定它们没有被锁定。我使用了 sysinternals 进程浏览器和 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。我在 Vista64 上运行 Python 2.6
谢谢
【问题讨论】: