Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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中从Maildir获取所有新消息_Python_Maildir - Fatal编程技术网

在python中从Maildir获取所有新消息

在python中从Maildir获取所有新消息,python,maildir,Python,Maildir,我有一个邮件目录: foo@foo:~/Maildir$ ls -l total 288 drwx------ 2 foo foo 155648 2010-04-19 15:19 cur -rw------- 1 foo foo 440 2010-03-20 08:50 dovecot.index.log -rw------- 1 foo foo 112 2010-03-20 08:49 dovecot-uidlist -rw------- 1 foo foo 8 2010

我有一个邮件目录:

foo@foo:~/Maildir$ ls -l
total 288
drwx------ 2 foo foo 155648 2010-04-19 15:19 cur
-rw------- 1 foo foo    440 2010-03-20 08:50 dovecot.index.log
-rw------- 1 foo foo    112 2010-03-20 08:49 dovecot-uidlist
-rw------- 1 foo foo      8 2010-03-20 08:49 dovecot-uidvalidity
-rw------- 1 foo foo      0 2010-03-20 08:49 dovecot-uidvalidity.4ba48c0e
drwx------ 2 foo foo 114688 2010-04-19 16:07 new
drwx------ 2 foo foo   4096 2010-04-19 16:07 tmp
在python中,我试图获取所有新消息(python 2.6.5rc2)。首先,获取“Maildir”是可行的:

但是如何访问“Maildir/new”?这不起作用:

>>> md = mailbox.Maildir('/home/foo/Maildir/new')
>>> md.iterkeys().next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/mailbox.py", line 346, in iterkeys
    self._refresh()
  File "/usr/lib/python2.6/mailbox.py", line 467, in _refresh
    for entry in os.listdir(subdir_path):
OSError: [Errno 2] No such file or directory: '/home/foo/Maildir/new/new'
>>>
md=mailbox.Maildir('/home/foo/Maildir/new') >>>md.iterkeys().next() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/usr/lib/python2.6/mailbox.py”,第346行,在iterkeys中 self._refresh() 文件“/usr/lib/python2.6/mailbox.py”,第467行,在刷新中 对于os.listdir(子目录路径)中的条目: OSError:[Errno 2]没有这样的文件或目录:'/home/foo/Maildir/new/new' >>>
有什么想法吗?

文件夹
/home/foo/Maildir/new
不是Maildir,它是Maildir的一部分。如果要使用
mailbox.Maildir
,则需要忽略属于规范一部分的子目录和文件。否则,您将根本不会将其视为Maildir

Maildir模块应该从
new
cur
读取消息,并且当您
close()
flush()
时,可以选择将消息从
new
移动到
cur
。要了解此实现是如何实现的,您必须查看代码

参考资料:

>>> md = mailbox.Maildir('/home/foo/Maildir/new')
>>> md.iterkeys().next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/mailbox.py", line 346, in iterkeys
    self._refresh()
  File "/usr/lib/python2.6/mailbox.py", line 467, in _refresh
    for entry in os.listdir(subdir_path):
OSError: [Errno 2] No such file or directory: '/home/foo/Maildir/new/new'
>>>