在Mac上通过Python读取文件夹中的文件

0 投票
3 回答
622 浏览
提问于 2025-05-01 04:27

我想在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))

撰写回答