我想在Scrapy中执行一些unit testing(screen scraper / web crawler)。 由于一个项目是通过“scrapy crawl”命令运行的,我可以通过像鼻子这样的东西运行它。 由于scrapy是在扭曲的基础上构build的,我可以使用它的unit testing框架Trial? 如果是这样,怎么样? 否则,我想鼻子工作。 更新: 我一直在讨论Scrapy-Users ,我想我应该“在testing代码中构build响应,然后调用带有响应的方法,并断言[我]在输出中获得预期的项目/请求。 我似乎无法得到这个工作。 我可以build立一个unit testingtesting课程,并在testing中: 创build一个响应对象 尝试用响应对象调用我的蜘蛛的parsing方法 但是它最终会产生这个回溯。 任何洞察力为什么?
当使用PyCharm IDE时,使用except:没有exceptiontypes触发从IDE的提醒这个exception子句是Too broad 。 我应该忽略这个build议吗? 或者是Pythonic总是指定exceptiontypes?
我有一个Python脚本,导入一个大的CSV文件,然后统计文件中每个单词的出现次数,然后将计数导出到另一个CSV文件。 但是,发生的事情是,一旦计数部分完成,出口开始说, Killed在terminal。 我不认为这是一个内存问题(如果这是我认为我会得到一个内存错误,而不是被Killed )。 难道这个过程需要很长时间吗? 如果是这样,是否有办法延长超时期限,以避免这种情况发生? 这里是代码: csv.field_size_limit(sys.maxsize) counter={} with open("/home/alex/Documents/version2/cooccur_list.csv",'rb') as file_name: reader=csv.reader(file_name) for row in reader: if len(row)>1: pair=row[0]+' '+row[1] if pair in counter: counter[pair]+=1 else: counter[pair]=1 print 'finished counting' writer = csv.writer(open('/home/alex/Documents/version2/dict.csv', 'wb')) for key, value in counter.items(): writer.writerow([key, value]) Killed finished counting发生打印finished counting后,完整的信息是: killed (program exited with code: 137)
我正在学习Perl和Python … …在同一时间,不是我的devise,但它必须完成。 题: 在我使用的Perl脚本(见下文)在我的TXT的头部。 #!/usr/bin/env perl use strict; use warnings; 有没有什么我应该为我的Python脚本日常工作?
大约一年前我从Perl切换到Python,并没有回头。 只有一个成语,我发现我可以在Perl比Python更容易做到: if ($var =~ /foo(.+)/) { # do something with $1 } elsif ($var =~ /bar(.+)/) { # do something with $1 } elsif ($var =~ /baz(.+)/) { # do something with $1 } 相应的Python代码不是很优雅,因为if语句不断变得嵌套: m = re.search(r'foo(.+)', var) if m: # do something with m.group(1) else: m = re.search(r'bar(.+)', var) if m: # […]
我想模仿python中的传值行为。 换句话说,我想确保我写的函数不会修改用户提供的数据。 一种可能的方法是使用深层复制: from copy import deepcopy def f(data): data = deepcopy(data) #do stuff 是否有更高效或更pythonic的方式来实现这一目标,尽可能less的假设尽可能传递的对象(如.clone()方法) 编辑 我知道在技术上,python中的所有东西都是按值传递的。 我对模拟行为感兴趣,也就是确保我不会混淆传递给函数的数据。 我想最通用的方法是用自己的克隆机制或深度拷贝克隆有问题的对象。
有没有办法让Python的optparse打印选项或标志的默认值时显示帮助–help?
这个问题的变化已经被问到,但是当我的模板被渲染时,我仍然无法正确加载我的样式表。 我试图在开发过程中从Django进程中提供静态媒体 – 我知道这在生产中是强烈的不鼓励。 我会发布我的configuration和我的模板,希望有人可以帮助我了解我要去哪里错了。 请注意,我确实试图按照Django项目网站上的示例,但是没有提到如何从模板中引用样式表。 我也尝试过许多不同的相同的东西,所以我的代码/设置可能与上面描述的有些不同。 settings.py MEDIA_ROOT = 'D:/Dev Tools/django_projects/dso/media' MEDIA_URL = '/media/' ADMIN_MEDIA_PREFIX = '/media/' urls.py from django.conf.urls.defaults import * from django.conf import settings from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', (r'^admin/(.*)', admin.site.root), (r'^ovramt/$', 'dso.ovramt.views.index'), ) if settings.DEBUG: urlpatterns += patterns('', (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), ) 在我的模板中: <head> <title> {% block […]
我需要编写或者查找一个脚本来使用Python包中的python-support来创build一个Debian包。 Python包将是没有C扩展名的纯Python。 用于testing目的的Python包只是一个带有空的__init__.py文件和一个Python模块package_test.py 。 打包脚本必须使用python-support为目标平台上可能的Python安装提供正确的字节码,例如Ubuntu Jaunty上的v2.5和v2.6。 我在Google上find的大部分build议都只是恶意黑客的例子,甚至不使用python-support或python-central。 我花了好几个小时来研究这个问题,我能想到的最好的办法就是从现有的开源项目中破解脚本,但是我不知道我正在做什么。 有没有人在这里以一种合理的方式制作了一个Python包的Debian软件包? 我开始认为,从不了解Debian包装和Python支持到获得工作脚本需要一周多的时间。 他人用了多久?
我在re模块中使用finditer函数来匹配一些东西,一切正常。 现在我需要找出我有多less匹配,有没有可能没有循环遍历迭代器两次? (一个找出计数,然后真正的迭代) 编辑:按要求,一些代码: imageMatches = re.finditer("<img src\=\"(?P<path>[-/\w\.]+)\"", response[2]) <Here I need to get the number of matches> for imageMatch in imageMatches: doStuff 一切正常,我只需要获得循环之前的匹配数。