我是Apple的新手,并且想知道你是否看到我的下面的代码有问题,因为它很慢:
set myPath to ((path to desktop as text) & "a.txt") as alias
set myFile to read myPath
set myText to paragraphs of myFile
set rowCounter to 0
repeat with nextline in myText
set rowCounter to rowCounter + 1
end repeat
rowCounter
我正在打开的文本文件很大,即大约1.1米的记录。 VBA中的相同代码打开它并在大约7秒内计算行数,使用applescript花了10分钟的大部分时间。
我做错了吗?
谢谢, 亚历
答案 0 :(得分:1)
你所拥有的重复循环最有可能永远处理 并且不需要使用重复循环来计算列表中的项目。
您已经拥有所有段落的项目列表。
因此,您应该只能 count 列表中的项目数。
Set rowcounter to number of items in myText
或者
Set rowcounter to count of myText
另外一边。
你的重复循环没有使用索引变量'nextline'
如果你想迭代每个项目,你会使用类似的东西:
Repeat with nextline from 1 to count of myText
Set thisItem to nextline of myText
....
答案 1 :(得分:0)
你也可以尝试这样的事情:
set myPath to POSIX path of ((path to desktop as text) & "a.txt")
set lineCount to (do shell script "wc -l " & quoted form of myPath & " | sed -E 's/^ *([[:digit:]]+).*/\\1/'") as number