我在OSX10.9上使用Python2.7,我想用默认的文件打开器打开一个文件,比如TextEdit for.txt文件,pdf opener for.pdf文件等等。
当文件被打开时,它应该被阻止,即我想打开一个文件,然后等待下一条指令的执行,直到文件没有被关闭。我读了https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/open.1.html和How to open a file in subprocess on mac osx,并使用了subprocess.call(["open","-W", FileName])
,但在这种情况下,即使在关闭打开的文件时,我也必须从停靠位置手动强制退出文件打开器。
所以,它也会导致关闭以前打开的文件。
假设我打开了一个多选项卡文本编辑器并运行应用程序。然后文本文件将在我已经运行的编辑器的选项卡中打开。然后我的程序将拒绝继续,直到我关闭所有的标签页,包括那些与我的任务无关的标签页。那么,如何解决这个问题。当文件被打开时,我正在一个线程中通过watchdog处理文件中的更改,原因是阻塞。在
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class ChangeHandler(FileSystemEventHandler):
def on_any_event(self, event):
myfunction(a, FileName, selectedFileName,b)
def filemonitor(FileName,tempLocation):
while 1:
global observer
event_handler = ChangeHandler()
observer = Observer()
observer.schedule(event_handler, tempLocation, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Thread(target=filemonitor,args=(FileName,tempLocation,)).start()
subprocess.call(["open","-W", FileName])
observer.stop()
time.sleep(2)
os.remove(FileName)
正在打开文件,阻止调用。然后倾听变化。关闭文件后,请删除该文件
这是与OSX的交易。它不会仅仅因为“关闭”应用程序而关闭它。 OSX旨在加速和简化您所做的一切,因为它会使应用程序保持原样,除非您对它做一些新的操作(打开一个打开应用程序的新文件或强制关闭它)。在
您可以:
这将关闭应用程序。
^{pr2}$我真的不明白你到底想做什么,因为你的问题写得很糟(并不是说我的英语更好)。但是如果您想等待应用程序终止,您可以:
但话说回来,你必须力:非常接近被告席上的申请,因为。。OSX不会因为你按下关闭按钮就关闭应用程序。在
你可以做的是:
这将:
这只是一个突然的想法,但我用OSX解决了类似的问题。
还有dtrace,iosnoop,execsnoop
相关问题 更多 >
编程相关推荐