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 |image0| .. |image0| image:: http://image.iswbm.com/20200607174235.png