我正在处理一个邮件发送库,我希望能够捕获发件人(SMTP,Google AppEngine等)产生的异常,并将它们包含在特定于我的库(ConnectionError,MessageSendError等)的容易捕获的异常中. .),原始的回溯完好无损,因此可以进行调试.在Python 2中执行此操作的最佳方法是什么?
我打算开发一个跨平台的脚本.在Linux和其他操作系统上,它将存储配置XDG_CONFIG_HOME
和数据文件(特别是下载的插件)XDG_DATA_HOME
.在Windows上,它将APPDATA
用于两者(除非有人有更好的主意).但是,在Mac OS X上做什么是正确的?
在我第一眼浏览一个方便的Macbook ~/Library
目录时,我看到了Preferences
和Application Support
文件夹.我原本打算使用那些,但Preferences
似乎只包含反向域名的plists com.apple.foo.bar.baz.plist
,并且每个文件夹都Application Support
对应一个bundle in /Applications
,所以我不确定系统对与其不匹配的文件的反应有多好标准.直接存储它们~/Library
可能是一种选择,但myscript.conf
如果有更好的地方,我不想用流浪文件污染它.
我应该在哪里存储这些文件?(请不要只是说~/.myscript
.我知道这是Unix的传统,但是在主目录中看到随机的dotfiles让我感到很恼火.)
我有一个Doctrine模型(Assignment
),它与另一个模型(Region
)有多对一的关系.分配由用户拥有(每个用户一次只能为每个区域分配一个分配),我试图用来indexBy
分配用户的分配数组,并使用分配区域的ID.但是,我只获得标准的0..n数字键.
当我尝试运行DQL查询时SELECT am, reg, user FROM Assignment am INDEX BY [...] JOIN am.region reg JOIN am.user user WHERE user.id = ?1
,INDEX BY的这些值都不起作用:
region
(错误:PathExpression无效.必须是StateFieldPathExpression.)region_id
(错误:类... \赋值没有名为region_id的字段或关联)region.id
(错误:字符串的预期结束,得到'.')这可能吗?如果没有,那么User
在没有区域的情况下访问某个区域的分配的便捷方式是indexBy
什么?
使用PHP时,我发现自己编写的代码很多:
$target = $_SESSION[AFTER_LOGIN_TARGET];
unset($_SESSION[AFTER_LOGIN_TARGET]);
return $target;
Run Code Online (Sandbox Code Playgroud)
在Python中,有一种dict.pop
方法可以让我在一个语句中执行类似的操作,而不需要临时变量:
return session.pop(AFTER_LOGIN_TARGET)
Run Code Online (Sandbox Code Playgroud)
PHP中是否有类似的功能或技巧?
在Python中替换从不同迭代器获取值的最有效方法是什么,例如,alternate(xrange(1, 7, 2), xrange(2, 8, 2))
它将产生1,2,3,4,5,6.我知道实现它的一种方法是:
def alternate(*iters):
while True:
for i in iters:
try:
yield i.next()
except StopIteration:
pass
Run Code Online (Sandbox Code Playgroud)
但是有更高效或更清洁的方式吗?(或者,更好的是,itertools
我错过了一个功能?)
我使用http://zine.pocoo.org/上使用的相同技术制作带幻灯片的网页.我正在制作网站的人希望幻灯片显示居中.但是,有些照片是纵向布局,有些是风景照.(这不是我的选择.)我需要一个position: absolute
能够在正确的位置包含物品的李,所以将它们居中并不起作用.(至少,不是通过常规方法.)
所以,我认为在肖像照片上的图像之前插入一个124像素的"间隔物"可能会有效.我尝试了它<span style="width: 124px;"> </span>
,但它只插入一个空格,而不是完整的124像素.尽管如此,幻灯片放入和放出都很好,所以我认为如果能够得到合适的间距,它会起作用.
我的问题是这样的:有没有人知道在HTML中内嵌 124px空间的方法(最好不使用图像),或者用其他方式将图片置于li
项目中心?
我在与CouchDB分页时看到的大部分研究表明,您需要做的是从您的视图中获取前十个(或多个)项目,然后记录最后一个文档的docid并将其传递到下一页.不幸的是,我可以看到该方法的一些明显问题.
不幸的是,我的研究表明,使用skip
5000个记录或更大的数据集会大大减缓,一旦你到达任何真正巨大的东西,就会出现严重的瘫痪(对于一个页面,有10个记录的页面20000将花费大约20秒 - 是的,那里是生产中的大数据集).所以这不是一个真正的选择.
那么,我要问的是,有没有一种有效的方法来分页CouchDB中的视图结果,可以从任意页面获取所有项目?(我正在使用couchdb-python,但希望没有任何与客户端相关的内容.)
我正在开发Flask扩展,为Flask添加了CouchDB支持.为了使它更容易,我已经子类化,couchdb.mapping.Document
因此store
和load
方法可以使用当前的线程本地数据库.现在,我的代码看起来像这样:
class Document(mapping.Document):
# rest of the methods omitted for brevity
@classmethod
def load(cls, id, db=None):
return mapping.Document.load(cls, db or g.couch, id)
Run Code Online (Sandbox Code Playgroud)
为简洁起见,我遗漏了一些,但那是重要的部分.但是,由于classmethod的工作方式,当我尝试调用此方法时,我收到错误消息
File "flaskext/couchdb.py", line 187, in load
return mapping.Document.load(cls, db or g.couch, id)
TypeError: load() takes exactly 3 arguments (4 given)
Run Code Online (Sandbox Code Playgroud)
我测试了替换呼叫mapping.Document.load.im_func(cls, db or g.couch, id)
,它有效,但我对访问内部im_
属性并不是特别高兴(即使它们已被记录).有没有人有更优雅的方式来处理这个?
假设我有一些HTML代码,就像这样(从Markdown或Textile或其他东西生成):
<h1>A header</h1>
<p>Foo</p>
<h2>Another header</h2>
<p>More content</p>
<h2>Different header</h2>
<h1>Another toplevel header
<!-- and so on -->
Run Code Online (Sandbox Code Playgroud)
我怎么能用Python为它生成一个目录?
python ×5
html ×2
arrays ×1
class-method ×1
couchdb ×1
doctrine-orm ×1
dql ×1
exception ×1
iterator ×1
macos ×1
many-to-one ×1
pagination ×1
php ×1
superclass ×1