从可变列的文本文件创建 python 字典

Create a python dictionary from a text file of variable columns

我的基本要求是向 API 提供数据,它在 system.The 上创建和删除用户 API 有自己的格式,它将采用 data.The API 有 2 个步骤:

  1. 连接到系统
  2. Create/delete user/users 根据输入文件中的数据

输入数据格式如下:

Device1 192.168.1.2 NEW:jason:OPERATOR NEW:kylie:ADMINISTRATOR DELETE:ron:OPERATOR
Device2 10.12.34.12 NEW:kim:OPERATOR DELETE:joe:USER_ROLE_GUEST 
Device3 12.3.21.45 
Device4 8.21.34.25 DELETE:alex:USER_ROLE_GUEST

API格式如下(以第一行数据为例):

b = bigsuds.BIGIP(hostname = '192.168.1.2', username = 'admin', password = 'letmein') 

b.Mgmt.UserMgmt.create_user([{'user': {'name': 'jason'}, 
                          'password': {'password': 'letmein'}, 
                          'permissions': [{'role': 'USER_ROLE_GUEST'}], 
                          'login_shell': '/sbin/nologin'},
                         {'user': {'name': 'kylie'}, 
                          'password': {'password': 'letmein'}, 
                          'permissions': [{'role': 'ADMINISTRATOR'}], 
                          'login_shell': '/sbin/bash'}])
b.Mgmt.UserMgmt.delete_user(['ron'])

密码总是固定的value.The登录shell值由这个字典决定:

find_shell = {'USER_ROLE_GUEST':'/sbin/nologin', 'OPERATOR':'/var/tmp', 'ADMINISTRATOR':'/sbin/bash'}

我想要的是循环遍历文件的每一行,连接到 IP 地址,执行添加或删除或完全跳过 IP(如果没有要添加或删除的用户)。这最好通过我通过使用 readlines(),将它分成列,然后使用列索引执行必要的 operation.However,这里的列长度不是前 2 列的 fixed.Apart,它们总是固定的,因为是从样本数据中可以明显看出,剩余的列总是 varying.What 是完成此操作的最理想方法?

也许是这样的:

with open(filename) as file:
   input_data = file.readlines()

for line in input_data:
   columns = line.strip().split(' ')
   if len(columns)<3:
      continue
   device = columns[0]
   IP_address = columns[1]
   actions = columns[2:]
   open_connection(IP_address) #whatever this may be
   for action in actions:
      perform_action(action) #whatever this may be

如果前两列是固定的,那么列[2:] 将包含您应该执行的命令。只要确保过滤掉只有 2 列的情况即可。

您并不特别需要字典来将您的行拆分为列。