获取在 OSX 上的应用程序中打开的文档的名称(python)
Posted
技术标签:
【中文标题】获取在 OSX 上的应用程序中打开的文档的名称(python)【英文标题】:Get name of document open in application on OSX (python) 【发布时间】:2016-04-28 10:53:06 【问题描述】:使用 psutil 模块我检索正在运行的应用程序列表,从那里我检查这些应用程序的打开的“.plist”文件。然后我读取“.plist”文件以获取当前在应用程序中打开的文档的标题(“NSTitle”)。
有没有更好/优化的方法来完成同样的任务?
import psutil
import os
import plistlib
def check_files(application):
plist_original_path = ""
while True:
for i in psutil.process_iter():
try:
if application in i.name():
for j in i.open_files():
if ".plist" in j.path:
plist_original_path = j.path
except psutil.ZombieProcess:
continue
except psutil.NoSuchProcess:
continue
try:
with open(plist_original_path, 'rb') as plist:
read_plist = plistlib.load(plist)
for i in read_plist:
try:
title = i["NSTitle"]
print(title)
except:
pass
except FileNotFoundError:
pass
check_files("Excel")
【问题讨论】:
【参考方案1】:我设法找到了一种将 AppleScript 与 Python 结合使用的更好方法。
import subprocess
import time
x = ''
while 1:
time.sleep(1)
with open('/Link/to/folder/app_script.txt', 'rb') as appscript:
x = appscript.read()
p = subprocess.Popen(['osascript', '-'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate(x)
x = stdout.split(b',')
print(x[0].decode().strip())
print(x[1].decode().strip())
print()
【讨论】:
以上是关于获取在 OSX 上的应用程序中打开的文档的名称(python)的主要内容,如果未能解决你的问题,请参考以下文章
在重新加载文档之前,如何在 OS X 上的 iCloud 中检测对 Core Data 文档的更改?
批处理或 PowerShell 命令获取 Windows 中所有打开的应用程序的名称