Tag: python

如何编写正确/正确的软件包__init__.py文件

我的软件包有以下结构: mobilescouter/ __init__.py #1 mapper/ __init__.py #2 lxml/ __init__.py #3 vehiclemapper.py vehiclefeaturemapper.py vehiclefeaturesetmapper.py … basemapper.py vehicle/ __init__.py #4 vehicle.py vehiclefeature.py vehiclefeaturemapper.py … 我不知道如何正确编写__init__.py文件。 __init__.py #1 . __init__.py #1看起来像: __all__ = ['mapper', 'vehicle'] import mapper import vehicle 但是,例如__init__.py #2应该如何呢? 我的是: __all__ = ['basemapper', 'lxml'] from basemaper import * import lxml 什么时候应该使用__all__ ?

什么是在Python中执行RPC的当前select?

实际上,我已经和Pyro和RPyC做了一些工作,但是比这两者有更多的RPC实现。 我们可以列出他们的名单吗? 本机基于Python的协议: PyRo4(Python远程对象) RPyC(远程Python调用) 电路 有很多底层协议的RPC框架: Spyne (见雷电说话 ) 基于JSON-RPC的框架: 蟒对称-jsonrpc rpcbd 拉冬 jsonrpc2-zeromq,python 肥皂: ZSI SOAPpy的 拉冬 Spyne 基于XML-RPC的框架: XMLRPC,使用标准库中的xmlrpclib和SimpleXMLRPCServer模块。 其他: WAMP(RPC + PubSub,JSON + MsgPack) 扭曲的传播 ZMQRPC(基于ZeroMQ和BSON) VPy(Versile Python) – AGPLv3 zerorpc(Python或Node.js,msgpack + ZeroMQ)

在IPython中自动重新加载模块

有没有办法让IPython自动重新加载所有更改的代码? 在shell中执行每行之前,或者在特定请求时执行失败。 我正在使用IPython和SciPy进行大量的探索性编程,每当我改变它时,必须手动重新加载每个模块,这是相当痛苦的。

pydot和graphviz错误:无法导入dot_parser,将无法加载点文件

当我用pydot运行一个非常简单的代码 import pydot graph = pydot.Dot(graph_type='graph') for i in range(3): edge = pydot.Edge("king", "lord%d" % i) graph.add_edge(edge) vassal_num = 0 for i in range(3): for j in range(2): edge = pydot.Edge("lord%d" % i, "vassal%d" % vassal_num) graph.add_edge(edge) vassal_num += 1 graph.write_png('example1_graph.png') 它打印出错误信息: Couldn't import dot_parser, loading of dot files will not be possible. 我正在使用python 2.7.3

在python中绘制数据matrix顶部的层次聚类结果

我怎样才能在一个matrix的值之上绘制一个树形图,在Python中恰当地重新sorting以反映聚类? 下图是一个例子: https://publishing-cdn.elifesciences.org/07103/elife-07103-fig6-figsupp1-v2.jpg 我使用scipy.cluster.dendrogram来制作我的树形图并对数据matrix执行分层聚类。 那么我怎样才能把数据绘制成一个matrix,在这个matrix中,行被重新sorting,以反映在特定阈值下切割树形图引起的聚类,并将树形图与matrix一起绘制? 我知道如何在scipy中绘制树形图,但不知道如何用右边的比例尺来绘制数据的强度matrix。 任何帮助,将不胜感激。

getattr()究竟是什么,我该如何使用它?

我正在阅读有关getattr()函数 。 问题是我还是不能把握它的用法。 我对getattr()理解是, getattr(li, "pop")和调用li.pop是一样的。 我不明白什么时候这本书提到你如何使用它来获得一个函数的引用,直到运行时才知道它的名字。 总的来说,也许这就是我在编程方面的一个小菜鸟。 任何人都可以谈一谈这个问题? 何时以及如何使用这个?

删除string中的字符列表

我想删除python中的string中的字符: string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')… 但我有很多人物,我必须删除。 我想了一个清单 list = [',', '!', '.', ';'…] 但是,我怎样才能使用list来replacestring中的string ?

如何在pandas数据框中传播一列

我有以下pandas数据框架: import pandas as pd import numpy as np df = pd.DataFrame({ 'fc': [100,100,112,1.3,14,125], 'sample_id': ['S1','S1','S1','S2','S2','S2'], 'gene_symbol': ['a', 'b', 'c', 'a', 'b', 'c'], }) df = df[['gene_symbol', 'sample_id', 'fc']] df 这产生这个: Out[11]: gene_symbol sample_id fc 0 a S1 100.0 1 b S1 100.0 2 c S1 112.0 3 a S2 1.3 4 b S2 14.0 […]

python groupby的行为?

>>from itertools import groupby >>keyfunc = lambda x : x > 500 >>obj = dict(groupby(range(1000), keyfunc)) >>list(obj[True]) [999] >>list(obj[False]) [] 范围(1000)在条件(x> 500)中显然按默认sorting。 我期待从0到999的数字在条件(x> 500)中被分组。 但是由此产生的字典只有999。 其他数字在哪里? 任何人都可以解释这里发生了什么?

为什么SQLAlchemy插入sqlite比使用sqlite3直接慢25倍?

为什么使用SQLAlchemy插入100,000行的简单testing用例比使用sqlite3驱动程序直接慢25倍呢? 我在实际应用中看到类似的减速。 我做错了什么? #!/usr/bin/env python # Why is SQLAlchemy with SQLite so slow? # Output from this program: # SqlAlchemy: Total time for 100000 records 10.74 secs # sqlite3: Total time for 100000 records 0.40 secs import time import sqlite3 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.orm import scoped_session, […]