Python Shell,便于重新执行的日志命令

2 投票
3 回答
1039 浏览
提问于 2025-04-15 19:08

假设我在Python的命令行里为我的Django应用做一些操作,像这样:

>>>from myapp.models import User
>>>user = User.objects.get(pk=5)
>>>groups = user.groups.all()

我想要做的是在不退出命令行的情况下,把这三条命令保存起来。这样的话,如果我之后重新启动命令行,就能快速恢复一个类似的环境。

3 个回答

1

Koobz,既然你刚刚开始使用ipython,这里有一个很酷的小技巧,可以让我在交互模式下自动导入我所有的应用模型:

#!/bin/env python
# based on http://proteus-tech.com/blog/code-garden/bpython-django/
try:
    from django.core.management import setup_environ
    import settings
    setup_environ(settings)
    print "imported django settings"
    try:
        exec_strs = ["from %s.models import *"%apps for apps in settings.INSTALLED_APPS if apps not in ['django_extensions']]
        for x in exec_strs:
            try:
                exec(x)
            except:
                print 'not imported for %s' %x
        print 'imported django models'
    except:
        pass
except:
    pass

然后我只需要设置一个别名: ipython -i $HOME/.pythonrc

1

所以感谢Ignacio,安装了IPython之后:

>>>from myapp.models import User
>>>user = User.objects.get(pk=5)
>>>groups = user.groups.all()
>>>#Ipython Tricks Follow
>>>hist #shows you lines in your history
>>>edit 1:3 # Edit n:m lines above in text editor. I save it as ~/testscript
>>>run ~/testscript

太棒了!

2

Django的命令行工具会使用IPython,如果你的电脑上有的话。这个工具可以记住你之前输入的命令,方便你查找历史记录。

另外,写一些临时的小脚本其实也不难

撰写回答