Получение дополнительных строк вывода на печать Python?

#python #python-3.x

#python #python-3.x

Вопрос:

Новичок в Python. Я создал скрипт для захвата заголовка активного окна и печати его на консоли. Я добавил временную метку и пользователя. Вот что у меня есть

 import win32gui
import datetime
import getpass

user = getpass.getuser()

windowTile = ""; 
while ( True ) :
    newWindowTile = win32gui.GetWindowText(win32gui.GetForegroundWindow());        
    if(newWindowTile != windowTile) :
        ts = datetime.datetime.now()
        windowTile = newWindowTile
        line =str(ts)   ' '   user   ' '   newWindowTile
        #line = newWindowTile
        print(line)
  

Вывод выглядит следующим образом

 2020-09-03 13:34:16.075329 Eric Spyder (Python 3.8)
2020-09-03 13:34:18.208329 Eric 
2020-09-03 13:34:18.279376 Eric COM5 - PuTTY
2020-09-03 13:34:18.877347 Eric 
2020-09-03 13:34:18.955382 Eric Spyder (Python 3.8)
2020-09-03 13:34:19.592409 Eric 
2020-09-03 13:34:19.631369 Eric COM5 - PuTTY
  

Почему я получаю дополнительный вывод строки с пустой информацией?

Комментарии:

1. Угадывание рабочего стола считается «окном»

2. Никогда не думал об этом таким образом.

3. Он работает как explorer.exe . Если вы убьете это, то вы убьете все остальное, кроме других активных окон.

4. Кроме того, нет причин заключать True в круглые скобки.

Ответ №1:

Когда вы переключаетесь между окнами, скажем, Alt-Tab, затем он ненадолго переключается на окно «Рабочий стол», у которого, скорее всего, нет имени. Просто щелкнув между двумя окнами, я не думаю, что вы увидите эти строки.

Предполагая, что вы хотите проигнорировать это или что-либо еще без заголовка, вы можете использовать if newWindowTitle , чтобы увидеть, является ли эта новая строка непустой

 newWindowTile = win32gui.GetWindowText(win32gui.GetForegroundWindow());        
if newWindowTitle and newWindowTile != windowTile:
    ts = datetime.datetime.now()
    windowTile = newWindowTile
    line =str(ts)   ' '   user   ' '   newWindowTile
    #line = newWindowTile
    print(line)
  

Комментарии:

1. Щелкая между окнами, я все еще, кажется, вижу строки, но ваш ответ помогает объяснить и выполнить то, что я хочу. Спасибо,