Python替代导入

时间:2014-02-03 19:32:21

标签: python python-2.7

我有以下代码:

def main():
    #init
     #Load config.
    import localconfig
    print localconfig.name
     #update mac adress db, if at all possible:
    try:
        from maclist import maclist
    except:
        import urllib2
        print "Fetching MAC adress db."
        maclist = urllib2.urlopen(localconfig.url)
        fl = open("maclist.py","w")
        fl.write(
"#maclist.py generated by "+localconfig.name+"""
#Based on """+localconfig.url+"""
maclist = {}
""")
        print "Generating maclist.py"
        for line in maclist:
            if "#" in line: line=line[:line.index("#")]
            line = line.split()
            if line:
                if "-" in line[0]:
                    line[0]=line[0].replace("-",":")
                if "/" in line[0]:
                    ndex = line[0].index("/")
                    ndex = (int(line[0][ndex+1:])//8)*3
                    line[0]=line[0][:ndex-1]
                line=[repr(part) for part in line]
                line = "maclist["+line[0]+"]="+line[1]
                fl.write("=".join(line.split())+"\n")
        fl.close()
    from maclist import maclist
    print "Succesfully loaded maclist.py"

这确实有效,但我不喜欢我正在导入(并因此运行)从interweb下载的内容。有没有更好的方法来解决这个问题? (请记住,我不想每次都重新下载,只有这是第一次(或者如果它已被删除))。

1 个答案:

答案 0 :(得分:1)

我建议您学习如何使用JSON,这样您就可以拥有这样的文件:

{<id>:<mac>,<id>:<mac>}

(是的,它类似于Python的dict,您可以使用与正确解析器相同的方式使用它)