如何解决;“内部表溢出”;在Applescript中

如何解决;“内部表溢出”;在Applescript中,applescript,Applescript,当尝试加载iTunesXML/plist文件时,我得到了“内部表溢出”。在谷歌搜索之后,看起来Applescript已经耗尽了内存。该文件在磁盘上的容量为18兆,因此,从更大的角度来看,它应该仍然可以在2兆的Mac上工作 我如何解决这个问题 显然,由于它是由iTunes创建的,我无法控制它的生成 更新:相关代码段: tell application "System Events" tell property list file (itunes_xml_file as string)

当尝试加载iTunesXML/plist文件时,我得到了“内部表溢出”。在谷歌搜索之后,看起来Applescript已经耗尽了内存。该文件在磁盘上的容量为18兆,因此,从更大的角度来看,它应该仍然可以在2兆的Mac上工作

我如何解决这个问题

显然,由于它是由iTunes创建的,我无法控制它的生成

更新:相关代码段:

tell application "System Events"
    tell property list file (itunes_xml_file as string)
        tell contents
            set my_tracks to value of property list item "Tracks"
            repeat with t in items of my_tracks

我猜AppleScript并不是用来处理这么多数据的。不久前,我也尝试使用AppleScript,并尝试做类似的事情(阅读iTunes库)。AppleScript的初衷是通过向应用程序发送AppleEvents来实现应用程序的自动化,这与AppleScript奇怪的语法结合在一起,使许多简单的事情变得混乱和困难

经过一段令人沮丧的时间后,我决定改用Python,因为它提供了一个用于读取plist文件的简单模块:

可能不是你想听到的,但是AppleScript的问题是它很容易被数据超载,因为它处理的数据的抽象相当庞大,并且占用大量内存

我相信,如果您尝试一下Python,您将在不到一个小时内启动并运行一些东西。Python默认安装在所有Mac电脑上,非常容易学习。

OS 10.6.8版

更新:有效性确认
在最初写了以下内容后,我试图还原手头的代码,但无法重现错误,并通过“删除”隐藏了帖子。
刚才,在使用
load script
调用加载的选项解析脚本中加载一个不存在和一个存在的文件路径时发生了错误,该调用最初由运行处理程序处理,由CLI osascript(1)程序调用。这次它是可逆的,我有信心取消“删除”它

简而言之,我的解决方案是将
任何人的POSIX文件路径\u POSIX
更改为
AppleScript的POSIX文件路径\u POSIX

某些关系
在写了下面的内容后,我现在意识到我第一次只看到了“iTunes”,没有看到与
告诉应用程序“系统事件”
相关的第一行,也没有使用它的
属性列表文件
,这可能/实际上/以某种方式可能与我的
关于
一个
POSIX文件的
信息问题有关
与OP/question:file或别名
as string
相关的注释给出了以冒号分隔的“HFS”路径。系统事件处理这两者

我的问题
在脚本加载脚本中,我从下面的块中得到了
错误“内部表溢出”.number-2707

它是在我使用~IPC~(
app-app\u-name的handler\u-name()
)调用块的处理程序时发出的(当我更彻底地调查它时,我以前遇到过它-没有IPC)

值得一提的是,此脚本的((?)父级(用于
my
)是
current application
(中间有一些级别)(在“AppleScript Editor”中编译并打包,作为独立的.app运行)

我的解决方案
改变

解决了这个问题——现在

思想
我猜不同的~modules~在处理
POSIX文件
info for
(打开“脚本添加”/(OSAX)”扩展名“标准添加”时有不同的“表”(现在没有太多C),因为它(两者)仍然是这样,不是吗?)

希望这能有所帮助,并且我的详细程度(和括号)没有让你感到放松或困惑:)晚安

在摇篮周围挖掘
关于AS记忆坟墓:(垃圾邮件预防让我降级了除2个超链接以外的所有超链接-给我一些代表,我会修复它:p)
•错误代码中有[错误代码](http://lists.apple.com/archives/applescript-users/2005/Jul/msg00166.html)通过list.apple.com与相关但可能是其他来源(并提及他的库加载器)联系。
•一些[好的提问](http://lists.apple.com/archives/applescript-implementors/2005/Jun/msg00104.html),下面可能是一个略带呵欠的回答:
•cs.cmu.edu提供了(120625)a,定义了与我的本地/系统/库/框架/Carbon.framework/Versions/a/Frameworks/OpenScripting.framework/Versions/a/Headers/AppleScript.h相同的限制

•最后是一个更远亲的问题[大型脚本的问题](http://macscripter.net/viewtopic.php?id=11760)from-一个关于applescript的知识和资源收集的好论坛。

如果不知道您尝试加载文件的方法,很难说问题出在哪里。您可以发布用于加载XML文件的代码吗?此外,如果您需要执行AppleScript的操作,您可以使用Python模块appscript()从Python中执行相同的操作;我没有使用Python版本,但是我使用了Ruby版本,非常好。谢谢。如果没有人真的能回答如何这样做,我将看看切换到Python的方案B。
try
    set file_modified_date to (info for my POSIX file file_path_posix)'s modification date
    true
on error error_message number error_number from error_source partial result error_result to error_class
    if {error_number} is not in {-43, -37} then error error_message number error_number from error_source partial result error_result to error_class
    false
end try
set file_modified_date to (info for my POSIX file file_path_posix)'s modification date
set file_modified_date to (info for AppleScript's POSIX file file_path_posix)'s modification date