Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 邮件中的py applescript问题?_Python_Email_Applescript - Fatal编程技术网

Python 邮件中的py applescript问题?

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

我试图从python内部调用apple脚本。我一直在使用
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新手……另外,我也非常感谢对优秀教程的建议。)