Сценарий Python необходимо сохранить вывод в текстовый файл - PullRequest
0 голосов
/ 21 декабря 2018

Я собрал некоторый код из Интернета, чтобы записать нажатые клавиши и текущий заголовок активного окна, и пытаюсь записать вывод скрипта python в текстовый файл.

Сценарий отлично работает в консоли IDLE, печатает нажатые клавиши и регистрирует любые изменения в текущем активном окне.

from pynput.keyboard import Key, Listener
import time
from win32gui import GetWindowText, GetForegroundWindow
import datetime
from threading import Thread

def on_press(key):
    print ('{0} pressed'.format(key))   

def on_release(key):
    ('{0} release'.format(key))
    if key == Key.esc:
        return False

def get_titles():
    current_title = None
    while True:
        moment2 = datetime.datetime.now().strftime("%d-%b-%Y [ %H:%M:%S ]")
        new_title = GetWindowText(GetForegroundWindow())
        if new_title != current_title:
            if len(new_title) > 0:
                #logging.info(" Moved to : " + new_title)
                current_title = new_title
                time.sleep(0.1)
                #print(new_title)
                ff= (moment2 + " : " +  "Moved T0 : "+ new_title)
                print (ff)

Я ищу простой способ записи результатов, которые я вижу в консоли, в текстовый файл.Это, наверное, очень просто, но я очень начинающий.Спасибо

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

попробуйте при запуске программы в консоли

python your_script.py > path_to_output_file/outpot.txt

в случае, если '>' не работает, затем попробуйте '>>'

0 голосов
/ 21 декабря 2018

Просто добавьте параметр

with open('textfile.txt', 'a+') as f:
  f.write(ff)

a для добавления в файл, а + означает, что если файла там нет, просто создайте его с указанным именем.

РЕДАКТИРОВАТЬ:

def on_press(key):
    print ('{0} pressed'.format(key))
    with open('textfile.txt', 'a+') as f:
      f.write(ff) 

РЕДАКТИРОВАТЬ 2:

def on_press(key):
    print ('{0} pressed'.format(key))
    k = key + '\n'
    with open('textfile.txt', 'a+') as f:
      f.write(key) 

# and in get_titles()
ff= (moment2 + " : " +  "Moved T0 : "+ new_title + '\n')
with open('textfile.txt', 'a+') as f:
      f.write(ff)
0 голосов
/ 21 декабря 2018

Python имеет встроенную функцию open(), импорт не требуется, что позволяет обрабатывать файлы.Эта функция «загружает» файл в память и может быть установлена ​​в различные режимы:

  • open("filename.txt", "a"), добавление содержимого в новую строку;
  • open("filename.txt", "w"), перезаписьсодержимое;и
  • open("filename.txt", "r"), установив его только для чтения.
  • open("filename.txt", "x"), для создания файла.

Вы можете добавить «+» к каждому из этих режимов («a +», «w +»), если вы хотите, чтобы файл был создан, если он еще не существует.Вы определяете файл в памяти для переменной следующим образом: a = open("filename.txt", "w"), а затем можете text = a.read() загрузить содержимое файла в строку или a.readlines(), чтобы загрузить строки в массив, разбить на \n,Используйте a.write("Your desired output") для сохранения содержимого в файл, если файл находится в режиме записи или добавления.

Редактировать:

Старайтесь открывать файлы только так долгопоскольку они действительно необходимы.

with open("filename.txt", "r") as f:
    file_contents = f.read()
    # file_contents = "This file contains\nvery important information"

    file_lines = f.readlines()
    # file_lines = ["This file contains", "very important information"]
    # Similar to file_lines = file_contents.split("\n")

, чтобы не блокировать другие части вашей программы и не повредить ваши файлы в случае неожиданного сбоя Python.

...