小编pay*_*yne的帖子

了解Popen.communicate

我有一个名为的脚本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(),它会永远挂起.

python subprocess communicate

56
推荐指数
2
解决办法
15万
查看次数

如何从Django的TabularInline管理视图中省略对象名称?

我正在使用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

28
推荐指数
2
解决办法
9022
查看次数

如何进行项目范围的自定义django-admin命令?

在Django中,为django-admin.py/manager.py 编写自定义管理命令很容易.

但是,这些命令驻留在应用程序级别,而不是整个项目级别.您将实现放入<project_dir>/<app_dir>/management/commands目录中,然后自动发现它们.

我有许多项目级别的命令,与项目中的任何一个应用程序无关.我可以将它们放在其中一个应用程序中,但有没有办法在Django中实现项目级管理命令?

django

15
推荐指数
1
解决办法
2491
查看次数

Numpy大步招数抱怨"阵列太大",为什么?

在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)

python arrays numpy stride

5
推荐指数
1
解决办法
785
查看次数

使用python请求模块时出现HTTP 503错误

我正在尝试发出 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)

python http request http-status-code-503 python-3.x

3
推荐指数
2
解决办法
1万
查看次数

如何在Django中按请求进行"Lazy-write"登录?

使用Django,我需要做一些涉及数据库写入的每请求日志记录.

我理解Django process_request()process_response()中间件钩子,但据我所知,这些钩子在关键路径(按设计)中呈现网页响应.

我不希望我的请求后数据库写操作阻止页面的响应时间.

是否有一个简单的Django设计模式,让我做一个"懒惰的日志写入",我可以使用请求挂钩在请求处理期间收集信息,但任何后续操作和实际的日志写操作不会发生在响应写入用户?

我目前正在使用WSGI,但更喜欢最通用的解决方案.

django

1
推荐指数
1
解决办法
773
查看次数