【问题标题】:Why python don't write anything into a dictionary?为什么python不将任何内容写入字典?
【发布时间】:2020-04-28 20:04:47
【问题描述】:

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

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

  • 一个是字母表(大写、小写、数字……)
  • 另一个完全相同,只是我使用random.shuffle() 对其进行随机化。

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

所有密钥及其名称都存储在一个文件中。

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

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

我先从密钥文件中读取

{注意:密钥使用 \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 个。我真的不知道如何解决这个问题,也不知道为什么要添加这个。

【问题讨论】:

  • int(len(keys)/2) 是一种冗长的写法len(keys)//2
  • @JohnColeman /2 和 //2 有什么区别?
  • // 是整数除法。

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


【解决方案1】:

你写了“num =+ 2”,我想你想写“num += 2”

【讨论】:

  • 感谢您阅读到最后,哈哈。这适用于这个问题,但现在我有另一个问题 fml
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多