我使用os.startfile("path/to/some/file.xlsx","print")
自动将excel工作簿打印到默认打印机。然后,我需要在文件打印后或至少在将其发送到打印机后删除该文件。
但是,os.startfile()
函数在其启动的应用程序完成启动时返回。换句话说,它会在实际打印之前返回,因为应用程序(在本例中为MS Excel)启动,然后 then 打印文件,然后 then 关闭。
这意味着这样的代码将不起作用:
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由于某些其他原因已经可以在PC上运行,所以我必须处理。
顺便说一句,Windows 7。
顺便说一下,MS Excel 2013。