从一个方法中提取的数据在其他方法中调用时无法正确解析.

class AppTool:
 def __init__(self, local_ip=None, host_ip=None, interval=None, transfer=None, bandwidth=None, app_results=None):
     self.local_ip = local_ip
     self.host_ip = host_ip
     self.interval = interval
     self.transfer = transfer
     self.bandwidth = bandwidth
     self.app_results = app_results if app_results is not None else {}

 @staticmethod
 def extract_information(output):
     local_ip_match = re.search(r'local (\d+\.\d+\.\d+\.\d+)', output)
     host_ip_match = re.search(r'Connecting to host (\d+\.\d+\.\d+\.\d+)', output)
     receiver_line_match = re.search(
         r'([\d.]+-[\d.]+)\s+sec\s+([\d.]+\s+\w?Bytes)\s+([\d.]+\s+\w?bits/sec)\s+receiver', output)
     if local_ip_match and host_ip_match and receiver_line_match:
         local_ip = local_ip_match.group(1)
         host_ip = host_ip_match.group(1)
         interval, transfer, bandwidth = receiver_line_match.groups()
         print("Extracted Information - local_ip", local_ip)
         print("Extracted Information - host_ip", host_ip)
         print("Extracted Information - interval", interval)
         print("Extracted Information - transfer", transfer)
         print("Extracted Information - bandwidth", bandwidth)
         return AppTool(local_ip, host_ip, interval, transfer, bandwidth)
     else:
         return None

在上面的方法中,键正在解析正确的值.但是,当在下面的方法中调用它时,它接受的值不正确

 @staticmethod
 def create_config_map_manifest(extracted_info, app_results=None):
     data = {
         "local_IP": extracted_info.local_ip,
         "host_IP": extracted_info.host_ip,
         "interval": extracted_info.interval,
         "transfer": extracted_info.transfer,
         "bandwidth": extracted_info.bandwidth,
     }
     if app_results:
         data["app_results"] = app_results
     config_map_manifest = yaml.dump(data, default_flow_style=False)
     print("ConfigMap Data:", config_map_manifest)
     return data

在执行代码时,输出如下所示.未在CREATE_CONFIG_MAP_MANIFEST()中正确设置从EXTECTED_INFORMATION提取的值.出现了不匹配的情况

 Extracted Information - local_ip 10.122.1.159
 Extracted Information - host_ip 10.122.1.150
 Extracted Information - interval 0.00-5.02
 Extracted Information - transfer 10.8 GBytes
 Extracted Information - bandwidth 18.4 Gbits/sec
 -------------------------------
 ConfigMap Data: bandwidth: null
 host_IP: 0.00-5.02
 interval: 10.8 GBytes
 local_IP: 10.122.1.150
 transfer: 18.4 Gbits/sec

如何在调用其他方法时保留YAML键值及其顺序?

推荐答案

我假设extracted_info对象是您的类AppTool的一个实例.我注意到的第一件事是,您正在将位置参数传递给一个函数,其中所有参数都是关键字参数,并且导致的不匹配被下移了一个值.所以host_ip变成了local_ip,interval变成了host_ip,依此类推.我会try 用下面的实例化返回AppTool对象:

return AppTool(local_ip=local_ip, host_ip=host_ip, interval=interval, transfer=transfer, bandwidth=bandwidth)

Python相关问答推荐

如何确保Flask应用程序管理面板中的项目具有单击删除功能?

X射线扫描显示Docker中的pip漏洞,尽管图像中未安装pip

在for循环中保存和删除收件箱

是否有方法将现有的X-Y图转换为X-Y-Y1图(以重新填充)?

将列表中的元素替换为收件箱中的元素

使用Python C API重新启动Python解释器

从单个列创建多个列并按pandas分组

NumPy中的右矩阵划分,还有比NP.linalg.inv()更好的方法吗?

有什么方法可以避免使用许多if陈述

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

如何使用pandasDataFrames和scipy高度优化相关性计算

Polars LazyFrame在收集后未返回指定的模式顺序

ODE集成中如何终止solve_ivp的无限运行

将输入聚合到统一词典中

在单个对象中解析多个Python数据帧

Python列表不会在条件while循环中正确随机化'

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

让函数调用方程

使用Python从rotowire中抓取MLB每日阵容

Geopandas未返回正确的缓冲区(单位:米)