Python 邮件中的py applescript问题?
我试图从python内部调用apple脚本。我一直在使用Python 邮件中的py applescript问题?,python,email,applescript,Python,Email,Applescript,我试图从python内部调用apple脚本。我一直在使用pyapplescript。我正在尝试从邮件应用程序获取邮件并将内容转储到目录中。(这个邮件帐户只有50多封电子邮件。)下面的脚本在“脚本编辑器”中运行时效果很好,但在python中执行时会进入“出错”分支 import applescript fetch_mail_test_scpt = applescript.AppleScript(''' tell application "Mail" set destin
pyapplescript
。我正在尝试从邮件应用程序获取邮件并将内容转储到目录中。(这个邮件帐户只有50多封电子邮件。)下面的脚本在“脚本编辑器”中运行时效果很好,但在python中执行时会进入“出错”分支
import applescript
fetch_mail_test_scpt = applescript.AppleScript('''
tell application "Mail"
set destinationFolder to ":Users:ranjit:Workspace:CRA:"
set my_counter to 0
repeat with theMessage in (every message of inbox)
set this_content to source of theMessage
set my_counter to my_counter + 1
set coerced_to_string to my_counter as string
set targetFile to destinationFolder & coerced_to_string
try
set my_file to open for access file targetFile with write permission
set eof of my_file to 0
write this_content to my_file
close access my_file
on error
try
close file targetFile
---return "coming here"
end try
---return "error!!?"
end try
end repeat
return my_counter
end tell
''')
print(fetch_mail_test_scpt.run())
此python脚本返回计数器的值。如果取消注释“return”错误!!?“”然后返回错误。基本上,它无法访问该文件。这是py applescript的已知问题吗?还是有解决办法?谢谢
(一般来说,py applescript在我编写的4-5个脚本中工作得非常好。)出于好奇:您是否知道邮件消息是以人类可读的.emlx文件的形式存储在
/Users/ranjit/Library/Mail/…
的子文件夹中?虽然我不确定您的脚本将走向何方,但使用类似于cp
(或python等价物)的东西可能更容易一些。谢谢你提供的信息。applescript提供了一个非常干净的解决方案,我想从其他python脚本调用它。另外,我相信applescript可以很容易地定制,以便通过带有过滤器等的电子邮件进行搜索,并且不想在python中执行所有繁重的操作,不是吗?显然,这是py applescript中的一个已知问题…“显然,这是py applescript中的一个已知问题…”--[scratches head]我建议您1。使用绝对HFS路径字符串,因为HFS路径是令人讨厌的、令人讨厌的东西(或者,更好的是,使用绝对POSIX路径字符串,因为POSIX路径完全避免HFS缺陷)。2.在on error…end
子句中添加一些调试代码,以显示错误消息,因为这将立即告诉您更多关于实际出错的内容和原因,而不是任何数量的盲目猜测。好的,您破解了它。“Macintosh HD:Users:…”而不是“Users:…”解决了所有问题。谢谢你!(另外,我不知道如何添加调试代码等……我是一名applescript新手……另外,我也非常感谢对优秀教程的建议。)