Я использую os.startfile("path/to/some/file.xlsx","print")
для автоматической печати книги Excel на принтер по умолчанию. Затем мне нужно удалить файл после его печати или, по крайней мере, после его отправки на принтер.
Однако функция os.startfile()
возвращается, когда запущенное им приложение завершает запуск. Другими словами, он возвращается до того, как на самом деле произойдет печать, потому что приложение (в данном случае MS Excel) запускается, и , затем печатает файл, а , а затем закрывает.
Это означает, что подобный код не будет работать:
import os
os.startfile("path/to/file.xlsx","print")
os.remove("path/to/file.xlsx")
.. поскольку файл будет удален перед отправкой на принтер в MS Excel.
И такой код:
import os
import time
os.startfile("path/to/file.xlsx","print")
time.sleep(5) # Delay to make sure the file has time to print
os.remove("path/to/file.xlsx")
.. мне кажется очень плохой практикой, потому что некоторым компьютерам потребуется больше времени, если они действительно медленнее, а мое приложение зависит от времени достаточно , чтобы сделать что-то вроде time.sleep(30)
неприемлемым.
Я ищу что-то вроде:
import os
os.startfile("path/to/file.xlsx","print")
get_stuck_here_until_the_print_is_done()
os.remove("path/to/file.xlsx")
.. или аналогичный.
Один из способов, о котором я подумал, - это проверить, когда процесс MS Excel завершен, что будет означать, что весь процесс печати должен завершиться , но я не могу этого сделать в моем случае, потому что MS Excel уже может быть запущен на ПК по какой-то другой причине, с которой мне приходится иметь дело.
Windows 7, кстати.
MS Excel 2013, кстати.