Python中如何仅将输出结果中的号码保存至文本文件?
解决Python程序保存输出号码到文本文件的问题
首先,咱们先梳理下你当前代码的核心问题:原来的逻辑仅当ress和目标用户名匹配时才会写入文件,而且写完就直接break终止循环,所以只有第一个匹配的号码会被保存,而其他你在输出中看到的Number: xxx对应的号码都没有被写入文件。
要实现把所有输出里显示的号码(也就是所有打印Number: xxx的那些号码)保存到文本文件,我们可以这样修改代码:
def list_checker(): list_file = input("List of numbers: ") usr = input("Username Target: ") # 避免使用Python关键字"list"作为变量名,换成更清晰的num_list with open(list_file, 'r') as f: num_list = f.read().splitlines() # 使用with语句打开输出文件,自动处理关闭操作,"a"是追加模式,"w"是覆盖原有内容 with open("hit.txt", "a") as output_file: for num in num_list: try: ress = check(num, usr) if ress == '__err__': print("Null") elif ress.lower() == usr.lower(): # 写入当前号码到文件,加换行符让每个号码单独一行 output_file.write(f"{num}\n") print(f"Number: {num} <OK:)>") # 如果你不需要找到第一个匹配就停止,可删除下面的break语句 # break else: output_file.write(f"{num}\n") print(f"Number: {num} <OK:)>") except Exception as e: # 建议捕获具体异常方便调试,这里暂时保留原有逻辑 output_file.write(f"{num}\n") print(f"Number: {num} <OK:)>")
修改的关键点说明:
- 变量名规范:把
list改成num_list,避免和Python内置关键字冲突,提升代码可读性。 - 安全的文件操作:用
with语句处理文件读写,不需要手动调用close(),能自动释放文件资源,避免资源泄漏。 - 统一写入逻辑:在所有打印
Number: xxx的分支(else和except块)中添加写入操作,确保所有输出中显示的号码都被保存到文件。 - 换行符处理:写入时添加
\n,让每个号码单独占一行,方便后续查看和处理。 - 可选的覆盖模式:如果希望每次运行程序时清空之前的结果,把
open("hit.txt", "a")改成open("hit.txt", "w")即可(a是追加模式,w是覆盖模式)。
如果你还需要保存ress和号码的对应关系(比如原来的ress+":"+num),只需要把output_file.write(f"{num}\n")改成output_file.write(f"{ress}:{num}\n")就可以了。
内容的提问来源于stack exchange,提问作者Nilesh Nehate
相关产品推荐
相关产品推荐

