Как запустить команду "Не сохранять" вместе с os.system('taskkill') в Python
Проект, над которым я работаю, создаст файл.CSV, чтобы пользователь мог просмотреть его при необходимости.
Если мой скрипт попытается открыть файл.CSV, когда у пользователя есть файл, открытый в Excel, мой скрипт запустится os.system("taskkill /im EXCEL.EXE")
, Это закрывает программу Excel, так что мой сценарий может записывать в файл, поскольку регистрация важнее, чем открываемый файл.
Моя проблема и где мне нужна помощь заключается в следующем: если пользователь изменил НИЧЕГО в файле Excel, когда он открыт, когда taskkill
Команда отправлена, Excel предлагает "Вы хотите сохранить?" Так что мой сценарий продолжает инициировать taskill
Командуйте снова и снова, пока Excel или мой скрипт не вылетят.
ВОПРОСЫ:
1.Как я могу сообщить своему сценарию, когда появится это приглашение?
2.Как я могу сказать Excel "Нет, не сохранять", используя скрипт Python, если это приглашение появляется?
Это функция, о которой я говорю:
def unlockDoor(x, y):
userDictionary = shelve.open(UserDict)
print('Welcome,',userDictionary[x])
print('Door Unlocked')
while True:
try:
with open(EntryLog, "a") as log:
log.write("{0},{1},{2},{3}\n".format(time.strftime("%Y-%m-%d %H:%M:%S"), x, userDictionary[x],y))
userDictionary.close()
break
except:
os.system("taskkill /im EXCEL.EXE")
2 ответа
Вы действительно не идете об этом правильно.
Во-первых, как taskkill
документы объясняют, вы можете использовать /f
флаг для принудительного завершения процесса. Это будет препятствовать тому, чтобы это выскакивало любое "Сохранить?" или "Ты уверен?" диалоги, или что-нибудь еще, и просто убить его.
Но на самом деле, вы не должны использовать taskkill
(и особенно не через os.system
вместо subprocess
) вместо того, чтобы просто делать это в Python. Использование внешних инструментов имеет смысл в некоторых случаях, например, если вы мастер с taskkill
но ничего не знаю о os
модуль или сторонний psutil
модуль. Но это явно не тот случай, иначе вы бы знали о /f
или, по крайней мере, известно, как его искать.
Между тем, если вы хотите взаимодействовать с графическим интерфейсом Excel, вам необходимо использовать библиотеку автоматизации графического интерфейса (например, pyautogui
).
Или, что еще лучше, используйте pywin32
автоматизировать Excel через COM. pywin32
поставляется с хорошей документацией, включая образцы для вождения Excel.
Я думаю, что я понял это. Добавляем /F в команду так: os.system("taskkill /F /im EXCEL.EXE")
: кажется, закрывает приложение независимо от того, было ли оно изменено или нет.
Если кто-нибудь знает, что означает это /F, пожалуйста, дайте мне знать.