在我创建virtualenv环境(VE)之后,在其中有一个名为"local"的符号链接.它指向VE文件夹,这意味着如果您打开它,您最终会在您开始的同一文件夹中.
我不关心这一点,但它使得PyCharm中的一些自动完成"向导"无法使用(它们一遍又一遍地显示相同的项目,每次都有更深的嵌套级别).
不知怎的,我找不到任何关于这个问题的暗示(我正在使用virtualenv 1.6.4).
问题是:"本地"符号链接用于什么?
如何使用Python生成重复日期?例如,我想为"每个第二个月的第三个星期五"生成重复日期.我想生成每日,每周,每月,每年的重复日期(即,与Outlook Express中的重复功能相同).
我想解析传入的类似CSV的数据行.值用逗号分隔(逗号周围可能有前导和尾随空格),并且可以用'或者"引用.例如 - 这是一个有效的行:
data1, data2 ,"data3'''", 'data4""',,,data5,
Run Code Online (Sandbox Code Playgroud)
但这个是畸形的:
data1, data2, da"ta3", 'data4',
Run Code Online (Sandbox Code Playgroud)
- 引号只能以空格为前缀或尾随.
应该识别这种格式错误的行 - 最好是以某种方式在行内标记格式错误的值,但如果正则表达式与整行不匹配,则它也是可接受的.
我正在尝试使用findall()的match()来编写能够解析它的正则表达式,但是我正在使用的每个正则表达式都存在边缘情况的一些问题.
那么,也许有解析类似经验的人可以帮助我吗?(或者这对于正则表达式来说太复杂了,我应该写一个函数)
EDIT1:
csv 模块在这里没什么用处:
>>> list(csv.reader(StringIO('''2, "dat,a1", 'dat,a2',''')))
[['2', ' "dat', 'a1"', " 'dat", "a2'", '']]
>>> list(csv.reader(StringIO('''2,"dat,a1",'dat,a2',''')))
[['2', 'dat,a1', "'dat", "a2'", '']]
Run Code Online (Sandbox Code Playgroud)
- 除非可以调整?
EDIT2:一些语言编辑 - 我希望它现在更有效
EDIT3:谢谢你的所有答案,我现在很确定正则表达式在这里不是一个好主意,因为(1)覆盖所有边缘情况可能很棘手(2)编写器输出不规则.写这个,我决定检查提到的pyparsing并使用它,或编写自定义FSM类解析器.
我正在编写一些代码来解析转发的电子邮件.我不确定的是,是否有一些Python库,一些我可以坚持的RFC或一些其他资源可以让我自动完成任务.
确切地说,我不知道转发的电子邮件的"布局"是否被某些标准或推荐所覆盖,或者它是否已经多年来发展,所以现在大多数电子邮件客户端为文本部分产生类似的输出:
Begin forwarded message:
> From: Me <me@me.me>
> Date: January 30, 2010 18:26:33 PM GMT+02:00
> To: Other Me <other-me@me.me>
> Subject: Unwise question
Run Code Online (Sandbox Code Playgroud)
- 并疯狂的附件(以及其他任何MIME部分都可以).
如果它仍然不够精确我会澄清它,只是我不是100%肯定要问什么(RFC,Python lib,惯例或其他).
我有2个虚拟主机的Apache,每个主机都有一个使用mod_wsgi,守护进程模式连接的Django站点,如下所示:
<VirtualHost 123.123.123.123:80>
WSGIDaemonProcess a.com user=x group=x processes=5 threads=1
WSGIProcessGroup a.com
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
<VirtualHost 123.123.123.123:80>
WSGIDaemonProcess b.com user=x group=x processes=5 threads=1
WSGIProcessGroup b.com
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我使用WSGIApplicationGroup %{GLOBAL}是因为Xapian已知问题.
现在,如果我了解幕后发生了什么,mod_wsgi会为我的每个站点启动5个守护进程.我可以在Apache日志中看到这个:
[info] mod_wsgi (pid=8106): Attach interpreter ''.
[info] mod_wsgi (pid=8106): Adding '.../lib/python2.5/site-packages' to path.
[info] mod_wsgi (pid=8106): Enable monitor thread in process 'a.com'.
[info] mod_wsgi (pid=8106): Enable deadlock thread in process 'a.com'.
[info] mod_wsgi (pid=8107): Attach interpreter ''.
[info] mod_wsgi (pid=8107): Adding '.../lib/python2.5/site-packages' to path.
[info] mod_wsgi …Run Code Online (Sandbox Code Playgroud) 如果任何其他会话使用例如自动提交或 READ COMMITED 隔离级别,这对 SERIALIZABLE 事务是否重要?
换句话说,从多个进程/线程(或其他需要注意的地方)访问数据库时,混合隔离级别(和自动提交)是否有任何危险?
请注意,我知道“普通”问题,例如要求重试的 SERIALIZABLE 事务等。我要求在混合不同隔离级别时可能发生的任何不明显的事情。
编辑:
从http://www.postgresql.org/docs/9.4/static/transaction-iso.html:
一致使用可序列化事务可以简化开发。保证任何一组并发可序列化事务将具有与一次运行一个相同的效果意味着如果您能证明单个事务,如所写的那样,在单独运行时会做正确的事情,您可以有相信它会在任何可序列化事务的组合中做正确的事情,即使没有关于其他事务可能会做什么的任何信息。
这可能表明混合隔离级别不是一个好主意。另一方面,它只是说一致使用 SERIALIZABLE 级别是好的,而不是混合隔离级别是坏的。
当我使用POP3协议访问GMail收件箱时,似乎在使用RETR命令获取给定电子邮件之后,在QUIT-ting和重新连接之后,在调用LIST时不再列出以前的RETR-ieved电子邮件.
然后,在转到:GMail设置//转发和POP/IMAP并设置"为所有邮件启用POP(即使已经下载的邮件)"时,在下次登录时,所有电子邮件都会被再次列出,但如果我RETR任何其中,重新记录后它再次从LIST中消失.
然后我可以再次转到GMail设置并重复整个过程,但它对我来说是一个显示器,因为我正在编写一个应该无需任何手动操作的脚本.
我错过了什么,或者只有IMAP可以在这里帮忙吗?
(编辑:RFC http://www.ietf.org/rfc/rfc1939.txt没有说RETR命令删除消息)
一个例子胜过千言万语:
In [3]: User.objects.filter(id=19)[0] == User.objects.filter(id=19)[0]
Out[3]: True
In [4]: User.objects.filter(id=19)[0] == User.objects.filter(id=19).defer('email')[0]
Out[4]: False
Run Code Online (Sandbox Code Playgroud)
它故意这样工作吗?
子问题:是否有任何简单的方法可以从延迟模型中获取常规模型实例?
编辑:
看起来contenttypes框架已正确修补:http://code.djangoproject.com/changeset/10523
所以我会说Model ._____ eq _____()运算符不应该是这样的:
def __eq__(self, other):
return isinstance(other, self.__class__) and self._get_pk_val() == other._get_pk_val()
Run Code Online (Sandbox Code Playgroud)
但更像这样:
def __eq__(self, other):
return ContentType.objects.get_for_model(self) is ContentType.objects.get_for_model(other) and self._get_pk_val() == other._get_pk_val()
Run Code Online (Sandbox Code Playgroud)
这当然首次导致两次DB命中,但幸运的是get_for_model似乎实现了缓存.
基于AJAX的UI中的常见模式是,当用户执行操作时,它会立即反映在UI中,但在到达AJAX响应确认一切正常之前标记为未完成.这就是在Google日历中添加活动的方式.当出现错误时,将恢复临时UI更改.
现在,手动进行这样的回归并不是太有创意,所以我怀疑jQuery中有一些"撤消助手",它允许保留UI元素的状态,然后恢复它 - 一种属性堆栈或类似的东西.这甚至不必与AJAX有任何关系.
有什么相似的吗?
python ×7
apache ×1
csv ×1
date ×1
django ×1
email ×1
fabric ×1
gmail ×1
imap ×1
javascript ×1
jquery ×1
mod-wsgi ×1
orm ×1
pexpect ×1
pop3 ×1
postgresql ×1
regex ×1
rfc ×1
transactions ×1
virtualenv ×1