1.21 Python 开发的几个小 Tips¶
1. 重定向标准输出到文件¶
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()
2. 将子网掩码转换为cidr¶
如何使用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