Search code examples
pythonmacosapplescriptsubprocesspopen

How to open a file in subprocess on mac osx


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


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.