如何使用AppleScript将数组条目以指定格式写入文件
解决AppleScript数组写入指定格式文件的问题
嘿,我懂你要的格式——每个元素带双引号,用分号加空格分隔对吧?之前的两种方法要么把元素全粘成一团,要么每行一个,都不符合需求,咱们可以用AppleScript的文本分隔符或者结合shell命令来搞定,给你两种实用的方案:
方案一:用AppleScript处理成目标字符串后写入
这种方法先在AppleScript里把数组转换成你要的格式字符串,再一次性写入文件,逻辑清晰,不容易出问题:
set Array to {"AA", "AB", "AC", "BA", "BB", "BC", "CA", "CB", "CC"} set PathToFile to "/path/to/your/target/file.txt" -- 记得替换成你的实际文件路径 -- 先给每个数组元素加上双引号 set quotedElements to {} repeat with elem in Array set end of quotedElements to "\"" & elem & "\"" end repeat -- 用"; "作为分隔符,把带引号的元素拼接成完整字符串 set originalDelimiters to AppleScript's text item delimiters set AppleScript's text item delimiters to "; " set formattedContent to quotedElements as string set AppleScript's text item delimiters to originalDelimiters -- 写入文件,用quoted form处理路径和内容,避免空格等特殊字符报错 do shell script "echo " & quoted form of formattedContent & " >> " & quoted form of PathToFile
方案二:结合Shell命令快速格式化
如果你想少写点AppleScript循环,可以借助shell的printf命令来处理,代码更简洁:
set Array to {"AA", "AB", "AC", "BA", "BB", "BC", "CA", "CB", "CC"} set PathToFile to "/path/to/your/target/file.txt" -- 把数组转换成shell能识别的带引号的参数格式 set originalDelimiters to AppleScript's text item delimiters set AppleScript's text item delimiters to "\" \"" set shellFriendlyArray to "\"" & (Array as string) & "\"" set AppleScript's text item delimiters to originalDelimiters -- 用printf给每个元素加"; ",最后用sed去掉末尾多余的分号和空格 do shell script "printf '%s; ' " & shellFriendlyArray & " | sed 's/; $//' >> " & quoted form of PathToFile
为什么之前的方法没达到效果?
- 直接
echo数组时,AppleScript会默认把数组元素无分隔符拼接成字符串,所以就变成了AAABACBABBBCCACBCC; - 循环逐个
echo时,每个echo命令默认会在输出末尾加换行符,所以每个元素单独占一行。
内容的提问来源于stack exchange,提问作者Clamsy
相关产品推荐
相关产品推荐

