2013-02-23 153 views
0

我想在我测试python manage.py shell中的东西时省去一些键入操作。基本上我有一个shell脚本让我进入>>> shell,但我希望能够在我的views.py脚本中自动推入导入调用,所以我不必每次输入它们时都要输入它们测试一下。我试图在shell脚本中写出它们,但它似乎没有传递给python shell。Shell脚本Python Shell导入

这是我到目前为止。

#!/usr/local/bin/bash 
python ~/path/to/manage.py shell 

import datetime 
from django.shortcuts import render_to_response 
from mymodel.models import * 
from myapp.forms import * 
... and so on 

我想什么发生是所有进口线被推入到Python Shell中,所以我不必键入/他们复制粘贴,每次我想在shell调试。

+0

3分钟3回答。周五晚上的回复率很好。 – 2013-02-23 02:55:16

+0

只有真正的极客在星期五这晚很晚:) – Brandon 2013-02-23 02:57:14

回答

2

将您的前传放入文件中。在这里,我将假定它的文件名为prequel。然后你就可以像这样调整自己的bash脚本:

cat prequel - | python ~/path/to/manage.py shell 

cat把文本文件的,但它可以把标准输入作为一个文件,所以我们串接您的前传,然后标准输入,然后该管道串接到壳。

+0

不错。我不知道你可以用'猫'来做到这一点。 – Brandon 2013-02-23 02:53:49

+0

我认为这有效。我说我觉得因为'>>>'没有出现,但是当我输入一些东西时,我实际上是在shell中。 – 2013-02-23 03:07:22

+0

@BrandonBertelsen:我猜测它不会打印'>>>',除非它检测到它的标准输入是tty。如果它是来自'cat'的管道(即使'cat'从tty获取输入),它仍然是一个管道而不是tty,所以它不会打印>>>。我想这就是为什么Django扩展的事情会更好。 (它可以自己执行,而不会混淆标准输入。) – icktoofay 2013-02-23 03:12:41