在Mac上通过Python读取文件夹中的文件
我想在Mac上读取一个文件,以便找到这个文件的md5值,并复制这个文件。
但是,我遇到了“没有这样的文件或目录”的错误。我的代码如下:
import os
import hashlib
def md5bul (dosyayolu):
try:
BLOCKSIZE = 65536
hasher = hashlib.md5()
with open(dosyayolu, 'rb' 'utf8') as afile:
buf = afile.read(BLOCKSIZE)
while len(buf) > 0:
hasher.update(buf)
buf = afile.read(BLOCKSIZE)
print(hasher.hexdigest())
except IOError, e:
print ' Error %s' %e
root = '/Users/username/'
for path, subdirs, files in os.walk(root):
for name in files:
dosya = path+name
md5bul (path,name)
print os.path.join(path, name)
但是,我收到了以下错误信息:
[Errno 2] No such file or directory:
我不明白为什么会出现这个错误信息。
你能发现代码中的错误吗?
3 个回答
0
但是;
print dosya = path + name
输出结果是 "/Users/username/Desktop/C"
其次,你说得对,但我粘贴代码时出错了。通常,我会把这一行写成 md5bul (dosyayolu)
0
好的,@anzel,我解决了这个问题,谢谢你。
我把我的代码改成了下面这样;
with open(os.path.join (path,name), 'rb' 'utf8') as afile:
0
很明显,dosya = path+name
这个写法是错的,因为从 os.walk
得到的 path
后面没有斜杠,比如说是 /Users/username,这样直接加上文件名 'test' 就变成了 Users/usernametest,这显然是不对的。
其次,你的 md5bul (dosyayolu)
这个函数只接受一个参数,但你调用的时候用了两个参数 md5bul (path,name)
,所以才会出现 找不到文件 的错误。
你可以改成这样调用:
mdfbul(os.path.join(path, name))