gpt4 book ai didi

python - 为什么 python 不允许我删除文件?

转载 作者:太空狗 更新时间:2023-10-30 01:39:23 24 4
gpt4 key购买 nike

我创建了一个 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

谢谢

最佳答案

在尝试删除文件对象之前,您需要调用 .close()

编辑:实际上您根本不应该打开该文件。 os.stat() 将在不打开文件的情况下告诉您文件的大小(以及其他 9 个值)。

这(我认为)做同样的事情但更干净一些(恕我直言):

import os

_MAX_SIZE = 691

def delete_if_blank(listFile):
# Make a list of files to check.
with open(listFile) as listFile:
filesToCheck = filter(None, (line.rstrip() for line in listFile.readlines()))

# listFile is automatically closed now because we're out of the 'with' statement.

print "Found %u files to check. Starting check." % len(filesToCheck)

# Remove each file.
for filename in filesToCheck:
if os.stat(filename).st_size < _MAX_SIZE:
print "Deleting %s" % filename
os.remove(filename)
else:
print "Keeping %s" % filename

关于python - 为什么 python 不允许我删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/953040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com