Наличие заявления на печать исчезает через определенный срок - PullRequest
0 голосов
/ 24 октября 2018

Хотелось бы узнать, можно ли ограничить время отображения заявления на печать в пользовательской консоли.У меня есть проект, который является Contact Manager, и он использовал файл CSV для хранения контактных данных.Программа предназначена для создания нового файла CSV в том числе, который недоступен в каталоге.Если я запускаю программу без CSV-файла в каталоге, у меня на консоли отображается сообщение для пользователя, сообщающее ему, что был создан новый файл.Я хотел бы, чтобы это сообщение отображалось только в течение примерно 10 секунд, а затем исчезало с консоли.Это возможно?Если так, я был бы признателен за некоторые предложения.Ниже приведена часть кода, которая проверяет файл CSV, затем создает новый и уведомляет пользователя, если новый был создан.

    def read_contacts():
        try:
           contacts = []
           with open(FILENAME, newline="") as file:
                reader = csv.reader(file)
                for row in reader:
                    contacts.append(row)
           return contacts
        except FileNotFoundError:
           print("Could not find " + FILENAME + " file!\n + "Starting new contacts file...\n")

В этот момент код продолжает создавать новый CSVфайл.Я хотел бы, чтобы предыдущий оператор печати исчез через 10 секунд, чтобы он не отображался в консоли все время работы программы.

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Вы можете использовать возврат каретки ("\ r"), чтобы вернуться к началу напечатанной строки, подождать 10 секунд, а затем заменить текст.

Пример:

import time
def read_contacts():
    try:
        contacts = []
        with open(FILENAME, newline="") as file:
            reader = csv.reader(file)
            for row in reader:
                contacts.append(row)
        return contacts
    except FileNotFoundError:
        msg = "Could not find " + FILENAME + " file! Starting new contacts file..."
        print(msg, end="\r")
        time.sleep(10)
        print(" " * len(msg), end="\r")
0 голосов
/ 24 октября 2018

Другим альтернативным подходом может быть использование символа \ 033 [F : (поскольку вы не хотите, чтобы задержка прерывала оставшийся скрипт, используйте библиотеку python threading )

import sys
import time
import threading

def func():
    time.sleep(10)
    sys.stdout.write("\033[F")

def read_contacts():
    try:
       contacts = []
       with open(FILENAME, newline="") as file:
            reader = csv.reader(file)
            for row in reader:
                contacts.append(row)
       return contacts
    except FileNotFoundError:
       errmsg="Could not find " + FILENAME + " file!\n + "Starting new contacts file...\n"
       print(errmsg)
       t = threading.Thread(target=func)
       t.start()
       #remaining code
0 голосов
/ 24 октября 2018

Если вы не в Windows, вы можете посмотреть curses .Существует также порт для Windows, который называется unicurses .

.
...