小编chr*_*ley的帖子

如何在不停止程序的情况下打印完整的回溯?

我正在编写一个程序来解析10个网站,查找数据文件,保存文件,然后解析它们以生成可以在NumPy库中使用的数据.有的错误该文件通过遇到不良链接,不好的XML,缺项,其他的事情我还没有进行分类.我最初制作这个程序来处理这样的错误:

try:
    do_stuff()
except:
    pass
Run Code Online (Sandbox Code Playgroud)

但现在我想记录错误:

try:
    do_stuff()
except Exception, err:
    print Exception, err
Run Code Online (Sandbox Code Playgroud)

请注意,这是打印到日志文件以供以后查看.这通常会打印非常无用的数据.我想要的是打印错误触发时打印的完全相同的行,没有try-except拦截异常,但我不希望它暂停我的程序,因为它嵌套在一系列for循环中,我想看完成了.

python exception-handling

696
推荐指数
15
解决办法
61万
查看次数

为什么Python模块有时不会导入他们的子模块?

我注意到今天我想解释一些奇怪的东西.我不是100%肯定如何将这个问题作为一个问题,所以谷歌是不可能的.由于某些奇怪的原因,日志记录模块无法访问模块logging.handlers.如果你不相信我,请亲自尝试一下:

>>> import logging
>>> logging.handlers
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'handlers'
>>> import logging.handlers
>>> logging.handlers
<module 'logging.handlers' from '/usr/lib/python2.6/logging/handlers.pyc'>
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么会这样?

python python-import

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

打印到同一行,而不是python中的新行

基本上我想做与这个家伙做的相反的事情......呵呵.

Python脚本:每次打印新行到shell而不是更新现有行

我有一个程序告诉我它有多远.

for i in some_list:
    #do a bunch of stuff.
    print i/len(some_list)*100," percent complete"
Run Code Online (Sandbox Code Playgroud)

因此,如果len(some_list)为50,我会将最后一行打印50次.我想打印一行并不断更新该行.我知道我知道这可能是你整天都会读到的最蹩脚的问题.我只是无法弄清楚我需要在谷歌中找到答案的四个字.

更新!我试过mvds的建议哪个看起来没错.新代码

print percent_complete,"           \r",
Run Code Online (Sandbox Code Playgroud)

完成百分比只是一个字符串(我现在第一次抽象,我试图成为文字).现在的结果是它运行程序,直到程序结束后才打印ANYTHING,然后在一行且只有一行打印"100%完成".

如果没有回车(但是使用逗号,mvds的一半建议),它将一直打印到最后.然后打印:

0 percent complete     2 percent complete     3 percent complete     4 percent complete    
Run Code Online (Sandbox Code Playgroud)

等等.所以现在新的问题是用逗号它不会打印直到程序完成.

使用回车并且没有逗号,它的行为与两者都不完全相同.

python stdout

63
推荐指数
7
解决办法
9万
查看次数

我需要一个日出/日落webservice api

任何人都知道一个很好的网络服务或api我可以用来批量日出/日落时间?到目前为止,我发现的每件事只能一次给出一天,或者对可以使用的日期有限制.

web-services

36
推荐指数
5
解决办法
3万
查看次数

有效地检测python中的符号更改

我想完成这个人做的事情:

Python - 计算符号更改

但是我需要优化它以超快速运行.简而言之,我想要一个时间序列,并告诉每次它越过零(改变符号).我想记录过零点之间的时间.由于这是真实的数据(32位浮点数),我怀疑我每个都有一个正好为零的数字,所以这并不重要.我目前有一个计时程序,所以我会把你的结果计算在内,看看谁赢了.

我的解决方案给出(微秒):

open data       8384
sign data       8123
zcd data        415466
Run Code Online (Sandbox Code Playgroud)

如您所见,过零检测器是缓慢的部分.这是我的代码.

import numpy, datetime

class timer():
    def __init__(self):
        self.t0 = datetime.datetime.now()
        self.t = datetime.datetime.now()
    def __call__(self,text='unknown'):
        print text,'\t',(datetime.datetime.now()-self.t).microseconds
        self.t=datetime.datetime.now()

def zcd(data,t):
    sign_array=numpy.sign(data)
    t('sign data')
    out=[]
    current = sign_array[0]
    count=0
    for i in sign_array[1:]:
        if i!=current:
            out.append(count)
            current=i
            count=0
        else: count+=1
    t('zcd data')
    return out

def main():
    t = timer()
    data = numpy.fromfile('deci.dat',dtype=numpy.float32)
    t('open data')
    zcd(data,t)

if __name__=='__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

python math performance numpy

29
推荐指数
4
解决办法
4万
查看次数

消除 SQLAlchemy 警告

我正在将一个遗留项目切换为自动生成 alembic 迁移,它有一些 sqlalchemy 无法识别的索引。当我运行时,alembic revision --autogenerate migration_name会创建一个空迁移(因为我已经解决了所有其他不一致问题),但我收到 8 个警告,例如:

/project/.venv/lib/python3.6/site-packages/sqlalchemy/dialects/postgresql/base.py:3328: SAWarning: Skipped unsupported reflection of expression-based index idx_name
  "expression-based index %s" % idx_name
Run Code Online (Sandbox Code Playgroud)

在 postgres 中,我查找索引定义,如下所示:

/project/.venv/lib/python3.6/site-packages/sqlalchemy/dialects/postgresql/base.py:3328: SAWarning: Skipped unsupported reflection of expression-based index idx_name
  "expression-based index %s" % idx_name
Run Code Online (Sandbox Code Playgroud)

读完这篇文章后,我尝试在模型定义之后添加索引并添加到__table_args__​​ .

mydb=# SELECT tablename, indexdef FROM pg_indexes WHERE schemaname = 'public' AND indexname = 'idx_name';
 tablename |                                   indexdef                                    
-----------+-------------------------------------------------------------------------------
 plan      | CREATE UNIQUE INDEX idx_name ON public.plan USING btree (lower((name)::text))
(1 row) …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy

8
推荐指数
1
解决办法
3647
查看次数

在google appengine上安装simplejson

超级小问题时间!我试图在google appengine上使用simplejson.在我的机器上的终端中,我安装了simplejson并正常工作.但是当我尝试在appengine上运行的脚本中导入它时,我得到一个错误,说没有这样的库存在.如果在我的机器上打开交互式控制台(从http:// localhost:8080/_ah/admin上的链接)并输入"import simplejson",我得到:

回溯(最近一次调用最后一次):文件"/ home/chris/google_appengine/google/appengine/ext/admin/init .py",第210行,在post exec(compiled_code,globals())文件"",第1行,在ImportError中:没有名为simplejson的模块

有什么想法吗?

python google-app-engine simplejson

5
推荐指数
2
解决办法
4934
查看次数

箭头键、home 和 end 在 django 终端中不起作用

我正在使用 django 1.2.5 和 python 2.7。由于某种原因,django shell 中的终端类型是错误的,这让我很恼火。如果我按上、下、右、左键,我会得到:

>>> ^[[A^[[B^[[C^[[D
Run Code Online (Sandbox Code Playgroud)

这仅发生在./manage.py shell. 这在普通的 python 解释器中不是问题,并且它的发生与屏幕是否打开无关。有什么想法吗?

编辑:这是结果import code; code.interact()

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
Run Code Online (Sandbox Code Playgroud)

python django shell

5
推荐指数
1
解决办法
768
查看次数

如何使用appengine从非Gmail帐户发送电子邮件

我已成功使用Google App Engine发送电子邮件.但是,我可以使用的唯一电子邮件地址是我列为网站管理员的Gmail地址.我在自己的域上运行应用程序(使用Google Apps购买和维护).我想从我自己的域名发送电子邮件.这是代码(或类似的东西):

from google.appengine.api import mail

sender = "myaddress@google.com"
sender_i_want = "myaddress@mygoogleapp.com"

mail.send_mail(sender=sender,
    to="Albert Johnson <Albert.Johnson@example.com>",
    subject="Your account has been approved",
    body=some_string_variable)
Run Code Online (Sandbox Code Playgroud)

当我尝试从我自己的域发送它时出现的错误是"InvalidSenderError:Unauthorized sender".我拥有域名,事实上我确实授权使用我的域名来发送邮件,我只需要知道如何说服App Engine这是真的.

python email google-app-engine

4
推荐指数
1
解决办法
1109
查看次数

从自定义模型继承时保留ModelAdmin属性(list_display等)

我有一系列的表格,我想都有一个订单字段.所以我做了一个抽象的模型:

class OrderedModel(models.Model):
    order = models.IntegerField(default=-1)
    def _order(self):
        pass #ordering widget for changelist_view
    _order.allow_tags = True
    def save(self,*args,**kwargs):
        #set order = 0 if < 0
        super(OrderedModel,self).save(*args,**kwargs)
    class Meta:
        abstract = True
Run Code Online (Sandbox Code Playgroud)

我不希望他们更改change_view中的"order"字段,因此我创建了以下ModelAdmin:

class OrderedAdmin(models.ModelAdmin):
    list_display = ("__str__","_order","order")
    list_editable = ("order",)
    readonly_fields = ("order",)
Run Code Online (Sandbox Code Playgroud)

只要从OrderedModel继承的每个模型在list_display,list_editable或readonly_fields中不再需要任何项目,那就没问题.例如,以下内容会生成错误,因为order在list_editable中但不在list_display中:

class Chapter(OrderedModel):
    title = models.CharField(max_length=32)

class ChapterAdmin(OrderedAdmin):
    list_display = ("title",)
Run Code Online (Sandbox Code Playgroud)

我注意到有一个get_readonly_fields我可以更改以确保"order"被添加到readonly_fields,但是没有get_list_display或get_list_editable来重写.是否有可能做到这一点?

django django-admin

3
推荐指数
1
解决办法
614
查看次数

python中的自定义类:是否可以使用实例调用方法?

我正在处理来自应用程序的数据,该应用程序在如何保持时间方面有一些怪癖.一个更简单的怪癖是它使用"一年中的一天"(1月1日是1,2月1日是32等)而不是月份+日.所以我想创建自己的日期类,它继承自默认的datetime类,并且有一些自定义方法.我白天打电话给我.除了输出到我的奇怪格式的方法之外,我还需要将奇怪的格式输入到白天的方法.就像方法.fromordinal()可以从datetime调用一样,我希望有一个方法.fromdayofyear()可以从白天调用.到目前为止我得到了:

import datetime

class daytime(datetime.datetime):
    @property
    def dayofyear(self):
        return (self.date - datetime.date(self.year,1,1)).days + 1
    def fromdayofyear(year,dayofyear):
        return datetime(year,1,1)+datetime.timedelta(dayofyear-1)
Run Code Online (Sandbox Code Playgroud)

问题是,由于fromdayofyear是一个类,它需要一个白天实例来执行任何方法.

>>> from utils import daytime
>>> day = daytime.fromdayofyear(2010,32)          #should give a datetime, Feburary first
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unbound method from_datetime() must be called with DayTime instance as first argument (got str instance instead)
>>>
Run Code Online (Sandbox Code Playgroud)

我可以很容易地编写一系列函数来做到这一点,但是这使得开始创建自定义类失败了.我意识到我可能不应该在这里使用课程.有人能指出我正确的方向吗?

编辑:

这就是我所确定的:

import datetime

class daytime(datetime.datetime):
    @property
    def dayofyear(self):
        return (self.date - datetime.date(self.year,1,1)).days + 1
    @classmethod …
Run Code Online (Sandbox Code Playgroud)

python datetime class instance

2
推荐指数
1
解决办法
645
查看次数