对于某个脚本(我正在使用Froglogic的Squish),我需要将某些文件复制到特定目录,运行应用程序,然后在进程结束后删除这些文件。问题出现在最后一部分。当我尝试(例如)
时 try:
os.remove("C:/Program Files (x86)/madeUpDirectory/madeUpSubdirectory/filler/madeUpFile.dll")
except LookupError, err:
test.fail("ERROR: The file could not be deleted.", str(err));
我得到了
OSError: [Errno 13] Permission denied: 'C:/Program Files (x86)/madeUpDirectory/madeUpSubdirectory/plugins/madeUpFile.dll'
错误消息。我的理解是这个特定的错误通常表示没有正确的权限写入有问题的目的地......但这似乎不协调,因为早先在同一个脚本中,我用这段代码将文件复制到该目录:
try:
length_of_directory = len(origin) + 1 # +1?
for dirname, dirnames, filenames in os.walk(origin):
for filename in filenames:
file_path = os.path.join(dirname, filename)# [length_of_directory:] # Combine path and filename.
file_path = file_path.replace('\\', '/') # Reformat path to use unix-style path separators.
dstdir = os.path.join(dstroot, os.path.dirname(file_path)[length_of_directory:])
dstdir = dstdir.replace('\\', '/') # Reformat path to use unix-style path separators.
print os.access(dstdir, os.W_OK)
if not os.path.isdir(dstdir):
os.makedirs(dstdir) # create all directories, raise an error if it already exists
dstdir = os.path.join(dstdir, filename)
dstdir = dstdir.replace('\\', '/') # Reformat path to use unix-style path separators.
if not os.path.isfile(dstdir):
shutil.copy2(file_path, dstdir)
if os.path.isfile(dstdir):
test.log("%s placed." % dstdir)
else:
test.log("NOTE: The file %s was already in position." % dstdir)
except LookupError, err:
test.fail("ERROR: Something went wrong copying", str(err));
因此,我认为可以说我拥有自己需要的权限 - 特别是当我在上一次运行脚本时覆盖放入完全相同位置的文件时没有出现任何错误。
我已经读过,由于文件被某个进程或其他进程保持打开,可能会出现此错误消息,但我不确定这是怎么回事;在出现此错误时,应该使用文件的进程已经结束。
我错过了什么,我敢肯定 - 但是什么?我应该如何开始诊断这个问题?
答案 0 :(得分:1)
尝试禁用防病毒软件,并确保已完成使用该文件的所有进程。如果这不能解决问题,请尝试在删除之前稍微延迟一下,以确保在尝试删除之前完成该过程。
答案 1 :(得分:1)
尝试在管理员命令提示符下运行python脚本。右键单击cmd提示符图标,然后以管理员身份运行,即可打开此类命令提示符。
当您尝试以没有足够特权执行操作的用户身份执行作业时,通常会遇到此错误。