import contextlib def unshelve_task(): pass @contextlib.contextmanager def close_stdout(): raw_stdout = sys.stdout file = open(log_file, 'a+') sys.stdout = file yield sys.stdout = raw_stdout file.close() with close_stdout(): unshelve_task()
如何使用netaddr库将ipv4子网掩码转换为cidr表示法? 示例:255.255.255.0到/ 24
使用netaddr:
>>> from netaddr import IPAddress >>> IPAddress("255.255.255.0").netmask_bits() 24
您也可以在不使用任何库的情况下执行此操作,只需在网络掩码的二进制表示中计算1位:
>>> netmask = "255.255.255.0" >>> sum([bin(int(x)).count("1") for x in netmask.split(".")]) 24