为什么python不将任何内容写入字典?

时间:2020-01-11 11:45:57

标签: python python-3.x file dictionary encryption

我正在创建一个程序,该程序使用我创建的方法将其信息保存为编码信息。

基本上,当我启动程序时,它会创建两个变量

  • 一个字母(大写,小写,数字,...)
  • 另一个完全一样,只是我使用random.shuffle()将其随机化。

这是“密钥”的“密钥”,我使用random.randint(1000000000,9999999999)给它分配了一个随机数,这个数字称为“密钥”的名称

所有键及其名称都存储在文件中。

在程序中,您将有机会编写类似名称的名称,该名称将使用我启动程序时生成的密钥进行加密,然后与密钥的名称一起存储在文件中。 / p>

(请注意,密钥始终具有不同的名称,加密的数据可能已使用同一密钥多次加密,然后存储在另一个文件中。)

我先从密钥文件中读取

{注意:密钥使用\ n模式存储,例如 file.write(f'{key} \ n {key_name} \ n')}

使用我的方法,长度总是可以被2整除,因此我使用了一个在for循环之前初始化的变量,并随循环增加它,同时我使用相同的变量从列表中读取(读取键的结果)文件)并为键分配名称,例如:

{4819572: 'varoabIfokdbKjs3918', 40101846: 'opqihduqv', 8291073: 'hqowirhwip', ...} 

我的密钥长354个字符,所以这只是一个很小的例子。

这是上面描述的代码

sep = os.sep
Ot = platform.system()
file_name = os.path.basename(__file__)
path_to_file = __file__.replace(file_name, '')

with open(f'{path_to_file}database{sep}history.dll', 'r', encoding='utf-8') as file:
    keys = file.readlines()

num = 0
archive = {}
for _ in range(int(len(keys)/2)):
    key_name = str(keys[num+1]).replace('\n','')
    key = str(keys[num]).replace('\n','')
    archive[int(key_name)] = key
    num =+ 2
num1 = 0
num2 = 0

此后,我使用key_name来获取在解密功能中使用的密钥以及加密的文本。

问题在于,即使字典中只有16个键,也只有2个。我真的不知道如何解决这个问题或为什么要追加它。

1 个答案:

答案 0 :(得分:1)

您已经写了“ num = + 2”,我想您要写“ num + = 2”