【发布时间】:2015-01-11 01:30:12
【问题描述】:
我试图让我的程序递归地遍历 C:\Windows 目录,并获取许多细节,包括文件的 md5 校验和。它工作得很好,除了它无法获得获取文件校验和的权限。这个函数是从我的主函数中调用的,变量filename 是试图被散列的文件的完整路径。错误发生在带有f = open(filename,'rb')的行上,错误为:
---> 84 f = open(filename,'rb')
85 for chunk in iter(lambda: f.read(128*md5.block_size),b''):
86 md5.update(chunk)
IOError: [Errno 13] Permission denied: 'C:\\Windows\\Microsoft.NET'
函数如下:
def checksum_md5(filename):
md5 = hashlib.md5()
f = open(filename,'rb')
for chunk in iter(lambda: f.read(128*md5.block_size),b''):
md5.update(chunk)
return md5.hexdigest()
程序不会更改文件,它只需要读取它们并获取校验和。我怎样才能让它工作?它一直工作到 C:\Windows\Microsoft.NET 目录,并按预期工作。
非常感谢!
-高尔夫球手
【问题讨论】:
-
确保您作为用户拥有对该文件夹的完全访问权限。 (读写权限)告诉我进展如何。
-
我尝试使用 takeown 和 icacls 在所有 C:\Windows* 目录中授予自己完全权限,但它仍然给我同样的无法访问权限。我尝试了两种不同的方法,一次授予我的特定用户权限,另一次授予管理员组权限。
-
C:\Windows\Microsoft.NET是文件,还是目录? -
@duskwuff 根据经验,很可能是一个目录。
-
目录。我才意识到我的问题。我有一个函数可以确保输入是文件而不是目录,方法是检查它是否有“。”在名字里。我现在怎样才能让它以不同的方式来解决这个问题?
def isfile(name): if '.' in name: return True else: return False是代码。谢谢。
标签: python windows permissions checksum