Python新手求助:如何将域名解析的IP按指定格式写入文件
如何获取域名IP并按指定格式写入文件?
当然可以实现啦!作为刚接触Python的新手,你已经找对了方向——用socket模块获取IP,再结合文件操作就能完成需求。我来一步步给你讲清楚:
核心步骤拆解
第一步:获取域名对应的IP
你提到的socket.gethostbyname()完全正确,不过咱们可以加个异常处理,避免域名解析失败时程序直接崩溃,新手调试起来更省心。第二步:格式化为目标字符串
拿到IP后,用Python的f-string(Python3.6+支持,写法最简洁)把它拼接成你要的add address=xxx list=st格式就行。第三步:写入文件
用with语句打开文件(它会自动帮你关闭文件,比手动close()更安全),选择追加模式('a')或者覆盖模式('w'),记得加换行符\n,不然每次内容会挤在一行。
基础实现代码
先给你最简洁的版本,满足核心需求:
import socket # 定义要解析的域名 target_domain = 'www.google.com' # 获取IP地址 ip = socket.gethostbyname(target_domain) # 格式化成目标字符串 result_line = f"add address={ip} list=st" # 追加写入文件(如果要覆盖原有内容,把'a'改成'w'即可) with open('ip_list.txt', 'a', encoding='utf-8') as file: file.write(result_line + '\n')
进阶版(带异常处理)
如果怕遇到域名解析失败、文件无法写入的情况,咱们加上异常捕获,让程序更健壮:
import socket target_domain = 'www.google.com' output_file = 'ip_list.txt' try: # 获取IP ip = socket.gethostbyname(target_domain) # 格式化字符串 result_line = f"add address={ip} list=st" # 写入文件 with open(output_file, 'a', encoding='utf-8') as file: file.write(result_line + '\n') print(f"成功写入:{result_line}") except socket.gaierror: print(f"出错啦:无法解析域名 {target_domain}") except IOError as e: print(f"写入文件失败:{e}")
批量处理多个域名
如果需要一次性处理多个域名,把域名放进列表循环处理就行:
import socket domains = ['www.google.com', 'www.github.com', 'www.baidu.com'] output_file = 'ip_list.txt' for domain in domains: try: ip = socket.gethostbyname(domain) result_line = f"add address={ip} list=st" with open(output_file, 'a', encoding='utf-8') as file: file.write(result_line + '\n') print(f"✅ 处理完成:{domain} -> {ip}") except socket.gaierror: print(f"❌ 跳过:无法解析域名 {domain}")
内容的提问来源于stack exchange,提问作者lookoutitzjim
相关产品推荐
相关产品推荐

