开发者社区> 问答> 正文

从文件中读取预定义的字典,将其用作字典

我目前处于一个需要随机创建字典来加密文件的项目中。然后反转密钥和字典的值以解密文件。

我现在正在做的是将原始字典保存到文件中,然后希望能够从该文件中读取以获取字典,然后通过“反向”功能运行它,从而能够解密该文件。

我之所以决定采用这种方法,是因为我不想每次加密某件事时都不会生成新的字典。

我目前已编写此代码,它检查是否存在带有已保存字典的文件。如果没有,那么我创建一个,所以只有一个:

def create_random_dictionary():
key = c.create_encryption_dictionary()
if os.path.exists("encryption_key"):
   pass

else:
    with open("encryption_key", 'w') as file:
        file.write(str(key))

然后,我尝试阅读它,然后便可以使用字典。但是由于写入文件时必须将其另存为字符串而不是字典,因此无法正确使用它进行解密或加密。

有没有一种方法可以读取输入文件,然后将读取的字符串转换回字典。我已经尝试过literal_eval这样

def string_to_dictionary():
with open('encryption_key', 'r') as f:
    read_lines = f.readlines
    x = literal_eval(read_lines)

print(x) # why I'm assigning x and printing x is just to see if it works

但我得到这样的错误:

File "/usr/lib/python3.6/ast.py", line 84, in _convert
raise ValueError('malformed node or string: ' + repr(node))ValueError: malformed node or string: ['{\'0\': \'ö\', \'1\': \'z\', \'2\': \'-\' 

我主要关心的是,如何摆脱多余的“”,然后如何读回字符串并将其转换为字典。

感谢我能得到的任何帮助。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 21:41:31 377 0
1 条回答
写回答
取消 提交回答
  • str()并非总是可逆的。碰巧的是,通常情况下都是这样。

    如果您的数据是JSON可编码的(很可能是),请改用json模块。(如果是这样,请不要使用pickle,但要注意模块文档的警告。)

    import json
    
    def create_random_dictionary():
        key = c.create_encryption_dictionary()
        with open("encryption_key.json", 'w') as file:
            json.dump(key, file)
        return key
    
    
    def read_dictionary():
        with open('encryption_key.json', 'r') as file:
            return json.load(file)
    

    回答来源:stackoverflow

    2020-03-24 21:41:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载