我有一个名为的脚本1st.py,它创建了一个REPL(read-eval-print-loop):
print "Something to print"
while True:
r = raw_input()
if r == 'n':
print "exiting"
break
else:
print "continuing"
Run Code Online (Sandbox Code Playgroud)
然后我1st.py使用以下代码启动:
p = subprocess.Popen(["python","1st.py"], stdin=PIPE, stdout=PIPE)
Run Code Online (Sandbox Code Playgroud)
然后尝试了这个:
print p.communicate()[0]
Run Code Online (Sandbox Code Playgroud)
它失败了,提供了这个追溯:
Traceback (most recent call last):
File "1st.py", line 3, in <module>
r = raw_input()
EOFError: EOF when reading a line
Run Code Online (Sandbox Code Playgroud)
你能解释一下这里发生了什么吗?当我使用时p.stdout.read(),它会永远挂起.
我正在使用Django的TabularInline管理视图来编辑与主要主题对象相关的类别对象,如下所示:

有没有办法不显示对象的呈现名称(本例中的"常见问题","媒体处理和边距"等),而无需创建自定义管理模板?换句话说,我只想显示一个干净的输入字段网格.
我找到了相关的渲染代码在这里,在这个片段:
...
<td class="original">
{% if inline_admin_form.original or inline_admin_form.show_url %}<p>
{% if inline_admin_form.original %} {{ inline_admin_form.original }}{% endif %}
{% if inline_admin_form.show_url %}<a href="../../../r/{{ inline_admin_form.original_content_type_id }}/{{ inline_admin_form.original.id }}/">{% trans "View on site" %}</a>{% endif %}
</p>{% endif %}
...
Run Code Online (Sandbox Code Playgroud)
是否有一个简短,聪明的方法来省略{{ inline_admin_form.original }}或让它返回Null?
在Django中,为django-admin.py/manager.py 编写自定义管理命令很容易.
但是,这些命令驻留在应用程序级别,而不是整个项目级别.您将实现放入<project_dir>/<app_dir>/management/commands目录中,然后自动发现它们.
我有许多项目级别的命令,与项目中的任何一个应用程序无关.我可以将它们放在其中一个应用程序中,但有没有办法在Django中实现项目级管理命令?
在numpy(1.8)中,我想将这个计算从Python循环中转移到更多numpy-ish以获得更好的性能:
(width, height) = base.shape
(toolw, toolh) = tool.shape
for i in range(0, width-toolw):
for j in range(0, height-toolh):
zdiff[i,j] = (tool - base[i:i+toolw, j:j+toolh]).min()
Run Code Online (Sandbox Code Playgroud)
base是一个~2000x2000阵列,tool是一个25x25阵列.(背景背景:基础和工具是高度图,我试图找出最接近基础的工具移动方法.)
我试图使用一个跨越式的技巧,从这开始:
base_view = np.lib.stride_tricks.as_strided(base, shape=(2000, 2000, 25, 25),
strides=(base.strides * 2))
Run Code Online (Sandbox Code Playgroud)
这将base_view[10,20]是从(10,20)的左上角的基数开始的25x25值的数组.
然而,这与"阵列太大"失败了.从价值测试来看,当数组的潜在大小(例如2000*2000*25*25*8)超过2 ^ 32-ish并且触发溢出检查时,它会报告此问题,从而将所有维度相乘.(我使用的是32位Python安装).
我觉得我错过了一些东西 - 为什么当步幅值明显起作用时,它不会让我创造这种"跨步观点"?有没有办法强迫这个?
更一般地说,有没有办法优化我的循环?
更新:确切错误:
ValueError Traceback (most recent call last)
<ipython-input-14-313b3d6c74fa> in <module>()
----> 1 newa = np.lib.stride_tricks.as_strided(base, shape=(1000, 1000, 25, 25), strides=(base.strides * 2))
C:\Python27\lib\site-packages\numpy\lib\stride_tricks.pyc in as_strided(x, shape, strides)
28 if strides …Run Code Online (Sandbox Code Playgroud) 我正在尝试发出 HTTP 请求,但我目前可以从 Firefox 浏览器响应 503 错误访问的网站。代码本身非常简单。在网上进行了一些搜索后,我user-Agent向请求添加了参数,但它也没有帮助。有人可以解释我如何摆脱这个 503 错误吗?顺便说一句,我想根据 btc 的价格制作自己的警报系统。
import requests
url = "https://www.paribu.com"
header ={'User-Agent': 'Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0 '}
response = requests.get(url,headers = header)
print(response)
Run Code Online (Sandbox Code Playgroud) 使用Django,我需要做一些涉及数据库写入的每请求日志记录.
我理解Django process_request()和process_response()中间件钩子,但据我所知,这些钩子在关键路径(按设计)中呈现网页响应.
我不希望我的请求后数据库写操作阻止页面的响应时间.
是否有一个简单的Django设计模式,让我做一个"懒惰的日志写入",我可以使用请求挂钩在请求处理期间收集信息,但任何后续操作和实际的日志写操作不会发生在响应写入用户?
我目前正在使用WSGI,但更喜欢最通用的解决方案.
django ×3
python ×3
arrays ×1
communicate ×1
django-admin ×1
http ×1
numpy ×1
python-3.x ×1
request ×1
stride ×1
subprocess ×1