将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的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

卡住了从活动到片段的移植

如何正确地将多个片段添加到片段过渡?

将非框架 PHP 项目移植到 Laravel 4.x

将 Perl 移植到 C++ `print "\x2501" x 12;` [重复]

将 python 代码移植到 C++ /(在 C++ 中打印出数组)

将 Visual Basic 语句移植到 Perl Win32::OLE 语句