小编unu*_*tbu的帖子

在Python中具有依赖性的惰性数据流(类似电子表格)属性

我的问题如下:我有一些python类具有从其他属性派生的属性; 这些应该在计算后缓存,并且每次更改基本属性时缓存的结果都应该无效.

我可以手动完成,但如果属性数量增加,似乎很难维护.所以我希望在我的对象中有类似Makefile规则的东西来自动跟踪需要重新计算的内容.

所需的语法和行为应该是这样的:

# this does dirty magic, like generating the reverse dependency graph,
# and preparing the setters that invalidate the cached values
@dataflow_class
class Test(object):

    def calc_a(self):
        return self.b + self.c

    def calc_c(self):
        return self.d * 2

    a = managed_property(calculate=calc_a, depends_on=('b', 'c'))
    b = managed_property(default=0)
    c = managed_property(calculate=calc_c, depends_on=('d',))
    d = managed_property(default=0)


t = Test()

print t.a
# a has not been initialized, so it calls calc_a
# gets b value
# c has not …
Run Code Online (Sandbox Code Playgroud)

python dependencies lazy-loading properties dataflow

13
推荐指数
1
解决办法
1046
查看次数

SQLite日期存储和转换

我在使用Python和SQLite进行日期存储/检索时遇到了设计问题.

我知道SQLite日期列将日期存储为ISO格式的文本(即'2010-05-25').因此,当我显示英国日期(例如,在网页上)时,我使用转换日期

datetime.datetime.strptime(mydate,'%Y-%m-%d').strftime('%d/%m/%Y')
Run Code Online (Sandbox Code Playgroud)

然而,当谈到将数据写回到表中时,SQLite非常宽容并且非常乐意存储'25/06/2003'在日期字段中,但这并不理想,因为

  • 我可以在同一列中留下混合的日期格式,

  • SQLite的日期函数仅适用于ISO格式.

因此,我需要在提交之前将日期字符串转换回ISO格式,但是我需要一个通用函数来检查要在所有日期字段中写入的数据,并在必要时转换为ISO.这对我来说听起来有点乏味,但也许这是不可避免的.

有更简单的解决方案吗?是否更容易将日期字段更改为10个字符的字段并存储'dd/mm/yyyy'在整个表中?这样在从表中读取或写入时不需要转换,如果我需要执行任何日期算术,我可以使用datetime()函数.

其他开发人员如何克服这个问题?任何帮助,将不胜感激.为了记录,我在Python 3.1中使用SQLite3.

python sqlite

12
推荐指数
2
解决办法
2万
查看次数

mysql for python 2. 7说没有找到Python v2.7

我从MySQL站点下载了mysql-connector-python-1.0.7-py2.7.msi并尝试安装,但它给出了错误

找不到Python v2.7.我们只支持python.org上的Microsoft Windows Installer(MSI).

我使用MySQL esssential5.1.66在Windows XP SP3上使用官方Python v 2.7.3

需要帮忙 ???

python mysql python-2.7 mysql-connector-python

12
推荐指数
3
解决办法
2万
查看次数

__kwdefaults__是一个函数对象属性有什么用?

函数对象具有属性__defaults____kwdefaults__.我看到,如果一个函数有一些默认的参数,然后它们被放在一个元组__defaults____kwdefaults__None.何时使用属性__kwdefaults__

python python-3.x

12
推荐指数
2
解决办法
1756
查看次数

用Python编写的HTML压缩器

我正在寻找一个用Python(模块或命令行)编写的免费(如在自由中)HTML压头(或重新压缩).我不需要使用白名单过滤HTML.我只想缩进(或重新缩进)HTML源代码以使其更具可读性.例如,假设我有以下代码:

<ul><li>Item</li><li>Item
</li></ul>
Run Code Online (Sandbox Code Playgroud)

输出可能是这样的:

<ul>
    <li>Item</li>
    <li>Item</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

注意:我不是在寻找非Python软件的接口(例如Tidy,用C语言编写),而是100%的Python脚本.

非常感谢.

html python indentation

11
推荐指数
3
解决办法
4390
查看次数

在matplotlib中标记乳胶中的蜱虫

在matplotlib的情节中,我特别想在x轴上将点标记为乳胶中的pi/2,pi,3pi/2等.我该怎么做?

python latex matplotlib

11
推荐指数
1
解决办法
8542
查看次数

如何在脚本仍在运行时使shell输出重定向(>)写入?

我写了一个永远不会终止的短脚本.这个脚本不断生成输出,我不得不每次检查.我在实验室计算机上通过SSH运行它,并将输出重定向到该机器上的public_html文件夹中的文件.

python script.py > ~/public_html/results.txt
Run Code Online (Sandbox Code Playgroud)

但是,当我刷新地址时,结果不会立即显示.当我终止程序时,结果显示出来,但正如我所说,它不会自行停止.这个redirect(>)是否与写作一样懒惰?有没有办法连续(或间隔)更新文件中的结果?

或者是网络服务器在仍在编写时不更新文件?

python linux bash shell command-line

10
推荐指数
2
解决办法
2万
查看次数

Django Celery实现 - OSError:[Errno 38]函数未实现

我安装了django-celery,我试图启动工作服务器,但是我得到一个没有实现函数的OSError.我在VPS上运行CentOS 5.4版(最终版):

    . broker -> amqp://guest@localhost:5672/
    . queues ->
        . celery -> exchange:celery (direct) binding:celery
    . concurrency -> 4
    . loader -> djcelery.loaders.DjangoLoader
    . logfile -> [stderr]@WARNING
    . events -> OFF
    . beat -> OFF
[2010-07-22 17:10:01,364: WARNING/MainProcess] Traceback (most recent call last):
[2010-07-22 17:10:01,364: WARNING/MainProcess] File "manage.py", line 11, in <module>
[2010-07-22 17:10:01,364: WARNING/MainProcess] execute_manager(settings)
[2010-07-22 17:10:01,364: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
[2010-07-22 17:10:01,364: WARNING/MainProcess] utility.execute()
[2010-07-22 17:10:01,364: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
[2010-07-22 17:10:01,365: …
Run Code Online (Sandbox Code Playgroud)

python django celery celery-task

10
推荐指数
1
解决办法
5972
查看次数

更改pandas数据帧中的值会起作用

我在更改数据框中的值时遇到问题.我还想咨询一下我需要解决的问题以及使用pandas解决问题的正确方法.我会很感激两者的帮助.我有一个文件,其中包含有关音频文件与扬声器匹配程度的信息.该文件看起来像这样:

wave_path   spk_name    spk_example#    score   mark    comments    isUsed
190  122_65_02.04.51.800.wav     idoD    idoD    88  NaN     NaN     False
191  121_110_20.17.27.400.wav    idoD    idoD    87  NaN     NaN     False
192  121_111_00.34.57.300.wav    idoD    idoD    87  NaN     NaN     False
193  103_31_18.59.12.800.wav     idoD    idoD_0  99  HIT     VP  False
194  131_101_02.08.06.500.wav    idoD    idoD_0  96  HIT     VP  False
Run Code Online (Sandbox Code Playgroud)

我需要做的是某种复杂的计数.我需要通过扬声器对结果进行分组,并为每个扬声器计算一些计算.然后我继续使用为我做出最佳计算的扬声器,但在继续之前,我需要将我用于计算的所有文件标记为正在使用,即更改它们出现的每一行的isUsed值(文件可以出现不止一次)为真.然后我再做一次迭代.计算每个扬声器,标记使用过的文件等,直到不再计算扬声器为止.

我想了很多关于如何使用pandas实现该过程(在常规python中很容易实现,但是需要大量的循环和数据结构,我的猜测会大大减慢这个过程,而且我也在使用它学习熊猫能力的过程更深入)

我出来了以下解决方案.作为准备步骤,我将按扬声器名称分组,并通过set_index方法将文件名设置为索引.然后,我将迭代groupbyObj并应用计算功能,该功能将返回所选扬声器和要标记为已使用的文件.

然后我将遍历文件并将它们标记为已使用(这将是快速而简单的,因为我事先将它们设置为索引),依此类推,直到我完成计算.

首先,我不确定这个解决方案,所以请随时告诉我你的想法.现在,我已经尝试实现这个,并遇到了麻烦:

首先我按文件名索引,这里没问题:

In [53]:

    marked_results['isUsed'] = False
    ind_res = marked_results.set_index('wave_path')
    ind_res.head()

Out[53]:
    spk_name    spk_example#    score   mark    comments    isUsed
    wave_path                       
    103_31_18.59.12.800.wav      idoD    idoD    99  HIT     VP  False
    131_101_02.08.06.500.wav     idoD …
Run Code Online (Sandbox Code Playgroud)

dataframe pandas

10
推荐指数
1
解决办法
1万
查看次数

从Numpy Rec Array中选择Rows

我有一个Numpy rec数组,我想从中做一些类似于SQL的快速查询:SELECT * where array['phase'] == "P".我想获得一个记录数组作为输出,每行对应于满足查询条件的原始数组中的一行.有任何想法吗?我很确定我以前做过这个,但是不记得这个功能.

谢谢

rec.array([ (5295499, 2.8123965, 127.20443, 0.0, 1237680436.06, 908, -19.942589, 134.33951, 0.3888, 'P', 0.19513991),
       (5295499, 2.8123965, 127.20443, 0.0, 1237680436.06, 1387, -18.102, 125.639, 0.11, 'P', 1.2515257),
       (5447254, 39.025873, 143.31065, 0.0, 1245455521.85, 1512, 33.121667, 130.87833, 0.573, 'LR', 45.099504)], 
      dtype=[('eventid', '<i4'), ('eventlat', '<f8'), ('eventlon', '<f8'), ('eventdepth', '<f8'), ('eventtime', '<f8'), ('stationid', '<i4'), ('stationlat', '<f8'), ('stationlon', '<f8'), ('stationelv', '<f8'), ('phase', '|S7'), ('timeresidual', '<f8')])
Run Code Online (Sandbox Code Playgroud)

python select numpy recarray

9
推荐指数
1
解决办法
3849
查看次数