+16 投票
分类:Python编程与实践 | 用户: (2.6k 分)

我试图用import os     os.system('cls')或import subprocess i=subprocess.call("cls", shell=True)清屏,来达到这一效果,但是实际它们还是换行显示(数值前面多了个零),这是怎么回事?如果我想消除某几行的显示该怎么操作?还有其他方法能达到标题所述效果吗?

代码如下:

import time
import subprocess
while True:
    localtime = time.localtime()
    time1 = time.strftime("%I:%M:%S", localtime)
    print(time1)
    if time1=='06:00:00' or time1 == '12:00:00':
        break
    else:
        time.sleep(1)
        i = subprocess.call("cls", shell=True)

部分显示结果如下:

12:29:52
12:29:54
12:29:55
12:29:56
12:29:57
12:29:58
12:29:59
12:30:00

1个回答

+2 投票
用户: (5.8k 分)

其实不用那么麻烦,直接使用print即可,示例如下:

import time

while True:
    localtime = time.localtime()
    time1 = time.strftime("%I:%M:%S", localtime)
    print('\r' + str(time1).ljust(8), end='')
    if time1 == '06:00:00' or time1 == '12:00:00':
        break
    else:
        time.sleep(1)

'\r'是转义字符,表示回到当前行的开头进行输出,为了防止因操作不慎使得每次字符串长短输出不一致,从而导致下一行不能完全覆盖上一行,这里使用字符串的ljust方法,控制输出长度为8,若当前输出字符串小于8,ljust(8)会输出空格来补齐8位,若当前输出字符串大于等于8,不作处理,end=''使得行尾不进行换行,这样就能实现你要的效果了。

欢迎来到 爱可可Q&A ,有什么问题可以尽管在这里提问,你将会收到其他成员的热心回答。
...