2

我想打开一个文件并等待下一条指令的执行,直到文件没有关闭。我按照链接如何在 python python 中打开 mac OSX 10.8.2 上的文件,但它没有用。

subprocess.call(['open','-W',FileName])在 texteditor 中打开文件,但仅当 text-editor 强制从停靠栏退出时才执行下一条语句,即使我关闭了打开的文件。意思是,它应该只在文件关闭时执行下一条语句,然后 texteditor 应该自动从停靠栏退出.
我也尝试过使用 Popen,但它没有用

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

请建议一些方法

4

2 回答 2

1

关闭文件并不会结束进程,因为当您关闭文件时,您会看到编辑器仍在屏幕顶部运行。

按“Cmd+Q”退出该过程。

由于您似乎无法让您的用户区分关闭文档和关闭应用程序,我只能建议一些非常丑陋的东西。您能否启动另一个使用 Applescript 等到“textedit”启动的后台进程,然后向“textedit”询问它已打开的文档列表。如果有的话,睡几秒钟,然后再检查一次。如果没有,它可以告诉“textedit”退出并退出自己。

执行此操作的 Applescript 如下所示。

tell app "TextEdit" to get documents

您可能需要使用“osascript”来让 Python 执行 Applescript。

于 2013-10-30T17:27:51.423 回答
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 一起退出。

于 2013-10-30T20:04:05.643 回答