我想打开一个文件并等待下一条指令的执行,直到文件没有关闭。我按照链接How to open a file on mac OSX 10.8.2 in python python但它没有用。
subprocess.call(['open','-W',FileName])
在texteditor中打开文件,但只有当文本编辑器从dock退出时才执行下一个语句,即使我关闭了打开的文件。也就是说,它应该只在文件关闭时执行下一个语句,然后短信应该从码头自动退出
我也尝试过Popen,但它没有用
ss=subprocess.Popen("~/Downloads/DeletingDocs.txt",shell=True)
ss.communicate()
请为它提出一些方法
答案 0 :(得分:1)
关闭文件不会结束此过程,因为当您关闭文件时,您将看到编辑器仍在屏幕顶部运行。
按“Cmd + Q”退出该过程。
由于您似乎无法让用户区分关闭文档和关闭应用程序,因此我只能提出一些非常糟糕的建议。你能开始另一个使用Applescript等待“textedit”启动的后台进程,然后向“textedit”询问它已打开的文档列表。如果有一些,请睡几秒钟,然后再次检查。如果没有,它可以告诉“textedit”退出并退出。
执行此操作的Applescript看起来像这样。
tell app "TextEdit" to get documents
您可能需要使用“osascript”来让Python执行Applescript。
答案 1 :(得分:1)
尝试将其另存为“EditOneAndQuit”,然后执行:
chmod +x EditOneAndQuit
然后从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
首先通过创建文档并对其进行编辑来从shell中尝试:
ls > fred.txt
./OpenOneAndQuit fred.txt
当您通过单击红色按钮关闭文档时,您应该看到脚本以及textedit退出。