Python读取文件内容逐行打印并覆盖同一行的实现问题
终端同屏行覆盖打印实现方案
问题根因
你代码无法实现预期效果的核心原因有两个:
- 从文本文件逐行读取的
line末尾自带换行符\n,每次写入会直接跳转到下一行,无法停在当前行做覆盖 - 输出内容未添加回车符
\r回到当前行首,下一次写入会接在原有内容后面,不会从头覆盖
修正后代码
import sys import time import requests # 替换为你实际的请求目标地址 url = "https://your-target-url.com" wordlist = input("Enter wordlist path: ") with open(wordlist, 'r', encoding='utf-8') as wl: for line in wl: # 移除行尾的换行符,保留其他内容 clean_line = line.rstrip('\n') r = requests.get(url + '/' + clean_line) # \r 回到行首,ljust(50) 补空格覆盖上一行残留内容,无换行符 sys.stdout.write(f'\rTrying: {clean_line}'.ljust(50)) sys.stdout.flush() time.sleep(0.3) # 全部执行完成后换行,避免后续终端输出拼接在当前行 sys.stdout.write('\n')
可选简化写法(Python 3.3及以上版本支持)
不需要手动调用sys.stdout相关方法,直接用print函数即可实现相同效果:
print(f'\rTrying: {clean_line}'.ljust(50), end='', flush=True)
参数说明:
end=''取消print默认的末尾换行符flush=True直接输出内容,不需要等缓冲区满
内容的提问来源于stack exchange,提问作者kAssofer
相关产品推荐
相关产品推荐

