python中的终端动态打印URL
我有一个包含URL的文件(google.com、microsoft.com等)。我想打印一个url,然后从中清除前一行。再次在上面写另一个url。代码示例如下:python中的终端动态打印URL,python,python-3.x,gnome-terminal,Python,Python 3.x,Gnome Terminal,我有一个包含URL的文件(google.com、microsoft.com等)。我想打印一个url,然后从中清除前一行。再次在上面写另一个url。代码示例如下: import sys with open('url.txt') as u: for line in u: line=line.strip() print(line, end="\r") #also tried sys.stdout.write("\r
import sys
with open('url.txt') as u:
for line in u:
line=line.strip()
print(line, end="\r")
#also tried
sys.stdout.write("\r{0}".format(line))
sys.stdout.flush()
上述代码不会删除所有以前的字符。
示例:“microsoft.com”后面的“google.com”将打印为“google.com.com”。
有人能告诉我如何完全删除前一行吗?试试这个:
导入系统
导入时间
将open('url.txt')作为u:
lastline=“”
对于计数,枚举中的行(u.readlines()):
如果计数!=0:#不要延迟输出的第一项
时间。睡眠(4)#4秒延迟,以便用户可以在下一个文本出现之前阅读
line=str(line).strip(“\n”)
打印(“”*(len(lastline)+1),end='\r')#清除最后一行
打印(行,结束='\r')
最后一行
在Windows10上测试
不过,光标将在开始时闪烁。要解决此问题,您可以通过pip install cursor
安装游标模块,然后使用此稍加修改的代码:
导入系统
导入时间
导入光标
将open('url.txt')作为u:
lastline=“”
对于计数,枚举中的行(u.readlines()):
如果计数!=0:#不要延迟输出的第一项
时间。睡眠(4)#4秒延迟,以便用户可以在下一个文本出现之前阅读
line=str(line).strip(“\n”)
打印(“”*(len(lastline)+1),end='\r')#清除最后一行
打印(行,结束='\r')
最后一行
cursor.hide()
cursor.show()
如果您使用代码写入文件,则这不是该代码。在上面的代码段中,除了读取文件“url.txt”并将文本发送到stdout(通过print和sys.stdout.write/flush)之外,您什么都不做。如果要将此输出管道化到一个文件或类似文件中,则应包括在终端中输入的内容以及使用的python代码。@Evan感谢您的快速响应。我只想检查url的有效性,如果有效,只需在终端中打印这些url即可。@Evan你能告诉我,如果新行比前一行小,为什么这段代码不删除前一行吗?不清楚你在问什么。在您最初的问题中,您说“我想打印一个url并删除该url,然后在其上方写入另一个url”,这似乎表明您想编辑一个文件,但现在您说您想“检查url的有效性,如果有效,只需在终端中打印这些url”。你应该编辑你的问题,明确你想要完成什么。“删除”是什么意思?你说的“有效”是什么意思?你可能想看看我认为你的ans与我的问题更相似。如果URL从小到大,则此代码可以完美地工作。我的意思是1.com10.com100.com,但是如果你有大到小的尺寸,它会从以前的url中提供一些额外的输出。在microsoft.com之后,google.com将成为google.com.com。这似乎很奇怪,我会测试一下more@AnirbanSingha好的,我编辑过了,现在效果很好。我的badsys.stdout.write(“\r033[K{0}”)。格式(行)将是最好的。您对此有何看法。