如何在 Python 中启动 'Do not Save' 命令和 os.system('taskkill')
How to initiate a 'Do not Save' command along with os.system('taskkill') in Python
我正在处理的项目将创建一个 .CSV 文件供用户在需要时查看。
如果我的脚本尝试打开 .CSV 文件,而用户已在 excel 中打开文件,我的脚本将启动 os.system("taskkill /im EXCEL.EXE")
。
这将关闭 Excel 程序,以便我的脚本可以写入文件,因为日志记录比打开的文件更重要。
我的问题和需要帮助的地方是:
如果用户在 excel 文件打开时更改了任何内容,当发送 taskkill
命令时,excel 提示 "would you like to save?"。
所以我的脚本继续一遍又一遍地启动 taskill
命令,直到 Excel 或我的脚本崩溃。
问题:
1.How 当出现此提示时,我可以让我的脚本知道吗?
2.How 如果出现此提示,我可以使用 python 脚本告诉 Excel "No Do Not Save" 吗?
这是我指的函数:
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")
我相信我已经弄明白了。
像这样在命令中添加/F: os.system("taskkill /F /im EXCEL.EXE")
: 似乎不管它是否被修改都会关闭应用程序。
如果有人知道这个 /F 是什么意思,请告诉我。
你真的不会这样做吧。
首先,正如the taskkill
docs所解释的,您可以使用/f
标志来强制终止进程。这将阻止它弹出任何 "Save?" 或 "Are you sure?" 对话框,或其他任何东西,然后将其杀死。
但实际上,您不应该使用 taskkill
(尤其是不应该通过 os.system
而不是 subprocess
),而应该只在 Python 中使用。在某些情况下使用外部工具是有意义的——例如,如果您是 taskkill
的向导但对 os
模块或第三方 psutil
模块一无所知。但这显然不是这里的情况,或者你会知道 /f
,或者至少知道如何搜索它。
同时,如果您想与 Excel GUI 交互,则需要使用 GUI 自动化库(如 pyautogui
)。
或者,更好的是,使用 pywin32
通过 COM 自动化 Excel。 pywin32
附带了很好的文档,包括驱动示例 Excel。
我正在处理的项目将创建一个 .CSV 文件供用户在需要时查看。
如果我的脚本尝试打开 .CSV 文件,而用户已在 excel 中打开文件,我的脚本将启动 os.system("taskkill /im EXCEL.EXE")
。
这将关闭 Excel 程序,以便我的脚本可以写入文件,因为日志记录比打开的文件更重要。
我的问题和需要帮助的地方是:
如果用户在 excel 文件打开时更改了任何内容,当发送 taskkill
命令时,excel 提示 "would you like to save?"。
所以我的脚本继续一遍又一遍地启动 taskill
命令,直到 Excel 或我的脚本崩溃。
问题:
1.How 当出现此提示时,我可以让我的脚本知道吗?
2.How 如果出现此提示,我可以使用 python 脚本告诉 Excel "No Do Not Save" 吗?
这是我指的函数:
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")
我相信我已经弄明白了。
像这样在命令中添加/F: os.system("taskkill /F /im EXCEL.EXE")
: 似乎不管它是否被修改都会关闭应用程序。
如果有人知道这个 /F 是什么意思,请告诉我。
你真的不会这样做吧。
首先,正如the taskkill
docs所解释的,您可以使用/f
标志来强制终止进程。这将阻止它弹出任何 "Save?" 或 "Are you sure?" 对话框,或其他任何东西,然后将其杀死。
但实际上,您不应该使用 taskkill
(尤其是不应该通过 os.system
而不是 subprocess
),而应该只在 Python 中使用。在某些情况下使用外部工具是有意义的——例如,如果您是 taskkill
的向导但对 os
模块或第三方 psutil
模块一无所知。但这显然不是这里的情况,或者你会知道 /f
,或者至少知道如何搜索它。
同时,如果您想与 Excel GUI 交互,则需要使用 GUI 自动化库(如 pyautogui
)。
或者,更好的是,使用 pywin32
通过 COM 自动化 Excel。 pywin32
附带了很好的文档,包括驱动示例 Excel。