我正在为Web应用程序编写一个日志文件查看器,为此我想通过日志文件的行分页.文件中的项目是基于行的,底部是最新项目.
所以我需要一种tail()方法,可以n从底部读取行并支持偏移量.我想出的是这样的:
def tail(f, n, offset=0):
    """Reads a n lines from f with an offset of offset lines."""
    avg_line_length = 74
    to_read = n + offset
    while 1:
        try:
            f.seek(-(avg_line_length * to_read), 2)
        except IOError:
            # woops.  apparently file is smaller than what we want
            # to step back, go to the beginning instead
            f.seek(0)
        pos = f.tell()
        lines = f.read().splitlines()
        if len(lines) >= to_read or pos == 0:
            return lines[-to_read:offset and -offset or None]
        avg_line_length …是否有类似于Python实用程序virtualenv的东西?
基本上它允许您将Python包安装到沙盒环境中,所以 easy_install django不会进入系统范围的site-packages目录,它将进入virtualenv创建的目录.
例如:
$ virtualenv test
New python executable in test/bin/python
Installing setuptools...cd .........done.
$ cd test/
$ source bin/activate
(test)$ easy_install tvnamer
Searching for tvnamer
Best match: tvnamer 0.5.1
Processing tvnamer-0.5.1-py2.5.egg
Adding tvnamer 0.5.1 to easy-install.pth file
Installing tvnamer script to /Users/dbr/test/bin
Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg
Processing dependencies for tvnamer
Finished processing dependencies for tvnamer
(test)$ which tvnamer 
/Users/dbr/test/bin/tvnamer
RubyGems有这样的东西吗?
你可以添加新的语句(例如print,raise,with)Python的语法?
说,允许..
mystatement "Something"
要么,
new_if True:
    print "example"
如果你应该,而不是如果它是可能的(没有修改python解释器代码)
这是一个有点虚荣的问题,但BuildBot的输出并不是特别好看.
例如,与...相比
..和其他人,BuildBot看起来相当......古老
我目前正在玩Hudson,但它是以Java为中心的(虽然在本指南中,我发现它比BuildBot更容易设置,并产生了更多信息)
基本上:有没有针对python的持续集成系统,它会产生大量闪亮的图形等等?
更新:从那时起,Jenkins项目取代了Hudson作为该软件包的社区版本.原作者也转到了这个项目.Jenkins现在是Ubuntu/Debian,RedHat/Fedora/CentOS等标准软件包.以下更新仍然基本正确.与詹金斯一起做这件事的出发点是不同的.
更新:在尝试了一些替代方案之后,我想我会坚持使用哈德森.诚信很好,很简单,但非常有限.我认为 Buildbot更适合拥有众多构建从服务器,而不是像我使用它一样在一台机器上运行.
为Hudson设置Python项目非常简单:
java -jar hudson.warhttp://localhost:8080git在Hudson全局首选项中设置路径)nosetests通过,easy_install如果它还没有nosetests --with-xunit --verbose**/nosetests.xml这就是所需要的.您可以设置电子邮件通知,插件值得一看.我目前正在使用的一些Python项目:
nosetests --with-coverage(这会将输出写入**/coverage.xml)我想一旦它被执行了它就在队列中,但在队列中是否有任何保证它会在X毫秒后完全调用?或者队列中其他较重的任务会延迟吗?
使用SVN,我有一个大的存储库,我保存在服务器上,并在几台机器上签出.这是一个非常好的备份系统,让我可以轻松地在任何机器上工作.我可以签出一个特定的项目,提交并更新"主"项目,或者我可以检查整个事情.
现在,我有一堆git存储库,用于各种项目,其中一些是在github上.我也有我提到的SVN存储库,通过git-svn命令导入..
基本上,我喜欢把我所有的代码(不仅仅是项目,而是随机的片段和脚本,像我的简历,我写过的文章,我制作的网站等等)放在一个大的存储库中,我可以很容易地克隆到远程机器,或记忆棒/硬盘作为备份.
问题是,因为它是一个私有存储库,并且git不允许检出特定文件夹(我可以将其作为一个单独的项目推送到github,但是更改会出现在master-repo和sub-回购)
我可以使用git子模块系统,但它并不是我想要的行为(子模块是指向其他存储库的指针,并不真正包含实际代码,所以它对备份没用)
目前我有一个git-repos的文件夹(例如,〜/ code_projects/proj1/.git /〜/ code_projects/proj2/.git /),在对proj1进行更改之后git push github,我将文件复制到〜/ Documents/code/python/projects/proj1 /并做一次提交(而不是单个repos中的众多提交).然后做git push backupdrive1,git push mymemorystick等
所以,问题是:你的个人代码和项目如何使用git存储库,并保持同步和备份?
我有一个字典,我需要传递键/值作为关键字参数..例如..
d_args = {'kw1': 'value1', 'kw2': 'value2'}
example(**d_args)
这样可以正常工作,但是如果d_args dict中的值没有被example函数接受,它显然会死掉..比如说,如果示例函数定义为def example(kw2):
这是一个问题,因为我不控制生成d_args或example函数..它们都来自外部模块,example只接受来自dict的一些关键字参数.
理想情况下我会这样做
parsed_kwargs = feedparser.parse(the_url)
valid_kwargs = get_valid_kwargs(parsed_kwargs, valid_for = PyRSS2Gen.RSS2)
PyRSS2Gen.RSS2(**valid_kwargs)
我可能只是从有效的关键字参数列表中过滤掉dict,但我想知道:有没有办法以编程方式列出特定函数所需的关键字参数?
我想打印一个像' - '多次的字符或字符串.
我可以不使用循环吗?..有没有像这样的功能
print('-',3)
..这意味着打印-3次,如下所示:
---