我的加密代码找不到文件“ FileNotFoundError:[Errno 2]没有这样的文件或目录:file”

问题描述

因此,我目前正在从事一个项目,在该项目中,我应该能够选择一个文件夹,对该文件夹中的所有内容进行加密,然后将其放入.zip文件中。

我加密文件并将其放入.zip文件的代码是这样的:

with zipfile.ZipFile(path,'w') as my_zip3:
        for folderName,subfolders,filenames in os.walk(directoryname):
            for filename in filenames:
                print(filename)
                self.encrypt(filename,key)
                my_zip3.write(os.path.join(folderName,filename))

现在,问题在于,当我仅使用“ print(filename)”部分时,它会正确打印所有文件,但是当我添加其他两行代码进行加密并将文件添加到zip时,它将只是给了我这个错误:“ FileNotFoundError:[Errno 2]没有这样的文件或目录:file” 我还有代码的其他部分可以工作,而无需加密部分。 这是加密功能:

def encrypt(self,filename,key):

    f = Fernet(key)

    with open(filename,"rb") as file:
        file_data = file.read()

    encrypted_data = f.encrypt(file_data)

    with open(filename,"wb") as file:
        file.write(encrypted_data)

解决方法

我假设在加密中,错误以打开(文件名,“ rb”)作为文件抛出在行中。 使用文件名,您只会得到文件的名称,而不是文件的路径。由于您要遍历目录,因此您可以在该结构内的任何位置,因此找不到。 尝试像使用os.path.join(folderName,filename)一样隐藏目录路径。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...