将perl代码移植到python的正确方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将perl代码移植到python的正确方法相关的知识,希望对你有一定的参考价值。
我想创建大约十几个与网络设备通信的python脚本,其中大多数将执行某种telnet / ssh / snmp操作,获取信息或修改它。
在perl中,我通常会使用嵌套的哈希,它可以正常运行,尝试将其重写为python中的嵌套字典,这样可行....但我不确定是否应该使用类。基本上我需要的最重要的数据结构是:
- “workunit”,基本上是一个具有许多属性的设备,如ipaddress,hostname,log_file_locations,results等。
- “设置”和“传输”字典基本上是说我们正在做ssh或snmp以及它的设置是什么(用户ID /密码,社区字符串等......)
因此,如果我为10个设备运行一个脚本,那么我通常会有一个字典字典,其中ipaddress是该字典的关键字。
我当然也可以创建一个“Workunit”类,并创建一个“Workunit”对象的基本列表,但是我读的python越少,“pythonic”就越少。感觉......在这种情况下,对“正确”方法有什么见解? (我肯定都会工作)。
答案
这最终取决于你。如果要使代码更易于重用,请花些时间在OOP下实现功能。由于您计划创建12个左右的脚本,因此可能是值得的。您描述的结构可以在脚本可以引用的库中创建。
在python中实现具有自定义数据类型的字典方面,您只需要实现一些必需的methods
class MyThing:
def __init__(self,name,location,length):
self.name = name
self.location = location
self.length = length
def __hash__(self):
return hash((self.name, self.location))
def __eq__(self, other):
return (self.name, self.location) == (other.name, other.location)
def __ne__(self, other):
以上是关于将perl代码移植到python的正确方法的主要内容,如果未能解决你的问题,请参考以下文章
将 Perl 移植到 C++ `print "\x2501" x 12;` [重复]