Question

I want to open a file and wait the execution of next instruction till file is not closed. I followed the link How to open a file on mac OSX 10.8.2 in python python but it didn't work.

subprocess.call(['open','-W',FileName]) opens the file in texteditor, but executes next statement only when text-editor is quit from dock forcefully, even though I closed the opened file.Means, it should execute next statement only when file is closed, and then texteditor should automatically quit from dock.
I also tried with Popen but it didn't work

ss=subprocess.Popen("~/Downloads/DeletingDocs.txt",shell=True)
ss.communicate()   

Please suggest some method for it

Was it helpful?

Solution

Try saving this as "EditOneAndQuit" and then do:

chmod +x EditOneAndQuit

Then start that from Python:

#!/bin/bash
# Start textedit in background
open "$1" &

# Wait till textedit has zero documents open
while true
do
sleep 1
docs=`osascript -e 'tell application "textedit" to get documents'`
if [ -z "$docs" ]; then
    # Kill off poor old textedit
    osascript -e 'tell application "textedit" to quit'
exit
fi
done

Try it from the shell first, by creating a document and editing it:

ls > fred.txt
./OpenOneAndQuit fred.txt

you should see that the script, along with textedit, exits when you close the document by clicking the red button.

OTHER TIPS

Closing the file does not end the process, as you will see that the editor is still running at the top of the screen when you close the file.

Press "Cmd+Q" to exit the process.

As it seems you cannot get your users to differentiate between closing documents and closing applications, I can only suggest something VERY UGLY. Can you start another background process that uses Applescript to wait till "textedit" starts, then ask "textedit" for a list of the documents it has open. Sleep for a few seconds if there are some, then check again. When there are none, it could tell "textedit" to exit and exit itself too.

The Applescript to do this looks like this.

tell app "TextEdit" to get documents

You may need to use "osascript" to get Python to execute Applescript.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top