小编Pau*_*ine的帖子

img HTML标记不尊重HTTP刷新标头(但在浏览器中加载图像URL)

我正在使用HTTP Refresh标头提供占位符图像,如下所示:

Connection:keep-alive
Content-Type:image/gif
Date:Thu, 01 Aug 2013 14:16:25 GMT
Refresh:10; url=/media/thumbs/document/18.png
Server:nginx/1.4.1
Transfer-Encoding:chunked
Run Code Online (Sandbox Code Playgroud)

如果我在完整窗口中加载图像占位符URL,则内容会在10秒后刷新,但如果我在图像标记src属性中放置相同的URL ,则图像永远不会刷新(在Chrome和FF中测试).

我为什么要这样做?我有一个应用程序,其中文档的缩略图需要几秒钟由服务器生成(这是一个复杂的SVG渲染).当用户在创建新文档后立即转到文档列表时,缩略图可能还没有.我试图使用带有刷新标题的占位符图像在几秒钟后加载真实的缩略图.

我不记得是怎么回事,但是在Netscape浏览器过去的好时光,像刷新标题这样的东西有时我们是如何破解动画的(甚至在Flash之前 - 我是史前还是什么?).我们称之为"服务器推送"(我猜这个流行语是用Comet模型回收的).

我在客户端使用Angular.js(服务器端是Django + uWSGI + Nginx),所以使用javascript攻击东西应该很容易,但我很好奇:是否有任何技巧(没有javascript)图像标签在几秒钟后加载另一个源?

(我也会标记这个Django和Nginx,因为可能有人知道服务器端解决方案)

html django image nginx http-headers

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

从python中的.ini文件中读取特殊字符文本

我正在运行一个脚本,它带有一个文本"rAh%19u ^ l \&G"即包含特殊字符.

当我在我的脚本中将此文本作为参数传递时,它运行正常,没有任何错误.

示例 - : ./abc.py <username><pwd>

以上文字基本上是一个密码.

现在,当我将我的值放在配置文件中并阅读上面的文本时,脚本失败了.

*******abc.ini*******

[DEFAULT]
username = rahul
pwd =  rAh%19u^l\&G
Run Code Online (Sandbox Code Playgroud)

它说

/bin/sh:M command not found.
Run Code Online (Sandbox Code Playgroud)

在配置解析器的帮助下阅读上述值

******以下是程序abc.py******

#! /usr/bin/python

parser = configparser.ConfigParser()
parser.read('abc.ini')
username = parser.get('DEFAULT','username')
pwd = parser.get('DEFAULT','pwd')


p = subprocess.Popen(
    "abc.py {0} {1}" .format(username, pwd), 
    shell=True, 
    stdout=subprocess.PIPE
)

out, err = p.communicate()

print(out)
Run Code Online (Sandbox Code Playgroud)

我试了很多,但没有找到具体的东西.

所以问题是如何读取包含.ini文件中特殊字符的文本.

python configparser

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

在Python中使用readlines坏代码?

我使用file.readlines进行了回答.评论家说使用readlines是废话代码(以及其他非常粗鲁的陈述).

这么糟糕吗?

python

5
推荐指数
3
解决办法
6003
查看次数

我可以使用python suds编写SOAP服务器吗?

我开始使用肥皂水肥皂客户,永远不会再触摸ZSI.

我知道suds是为了客户端,但我也想用它来制作服务器站点,以摆脱ZSI.

我如何使用suds来解析soap请求而不是响应?

[更新]

  • 如果你想使用SOAP公开一些接口,最好的选择似乎是rpclib.Flask-enterprise看起来很有前途.两者都将从Python代码生成WSDL.
  • 相反,如果您需要编写一个遵循由第三部分生成的WSDL的Python SOAP Web服务,那么到目前为止没有什么能胜过ZSI.

python soap zsi suds

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

以django形式强制执行

强制论证在django形式中做了什么?我已经阅读了文档,但它不是很有用,所以用一些用例示例的一个很好的解释会有所帮助.引用文档:

一个函数,它接受一个参数并返回一个强制值.示例包括内置int,float,bool和其他类型.默认为标识功能.

python django django-forms

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

Math.pow比使用临时任务的乘法更昂贵吗?

将javascript库移植到Python时,我发现了以下代码:

return Math.atan2(
    Math.sqrt(
       (_ = cos?1 * sin??) * _ + (_ = cos?0 * sin?1 - sin?0 * cos?1 * cos??) * _
    ), 
    sin?0 * sin?1 + cos?0 * cos?1 * cos??
);
Run Code Online (Sandbox Code Playgroud)

我错了还是(_ = cos?1 * sin??) * _写得像Math.pow(cos?1 * sin??, 2)

我想作者试图避免使用Math.pow,与临时分配相比,这在javascript中是否昂贵?

[更新]

截至2016年底,Chrome 53.0(64位)看起来差异并不像以前那么大.

javascript exponent

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

检测表单图像中选定的复选框

在巴西,有一种称为 DNV 的表格(在葡萄牙语中的“Born Alive Declaration”之后)。我在一家巴西政府机构工作,该机构每年从全州每家医院收到超过 50 万份此类药物。

我正在尝试检测复选框字段上的标记。我从“性别”字段开始,其中包含 M(男性)、F(女性)或 I(忽略)的复选框。

我已经能够使用 OpenCV 自信地找到字段和复选框:

在此处输入图片说明

我猜有更多暗像素的复选框区域是被标记的区域,即使图像质量非常低,它也能在 99% 的时间内工作。

if sum(checkbox1) < sum(checkbox2):
    return "M"
else:
    return "F"
Run Code Online (Sandbox Code Playgroud)

有时这会失败:一个人会告诉“女性”复选框被标记,但由于sum(checkbox1)是 577,065 和sum(checkbox1)605,880,计算机说它是一个男孩。

在此处输入图片说明

我已经尝试使用几种方法和值与形态变换相结合的阈值操作(在几种组合中侵蚀和扩张并使用许多内核形状和大小)并得到这个:

sex_field = cv2.fastNlMeansDenoising(cv2.blur(sex_field, (3, 3)), 30, 30, 15, 50)
_, sex_field = cv2.threshold(~sex_field, 127, 255, 0)
sex_field = ~cv2.morphologyEx(sex_field, cv2.MORPH_CLOSE, 
                              np.ones((3, 3), np.uint8), iterations=3)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

问题cv2.fastNlMeansDenoising是贵。是否有更轻量级的算法对这个用例有用?

python opencv

5
推荐指数
0
解决办法
1584
查看次数

Jupyter Notebook: (OperationalError('磁盘 I/O 错误',))

我在运行现有 Jupyter Notebook 文件时收到以下错误

The history saving thread hit an unexpected error (OperationalError('disk I/O error',)).History will not be written to the database.
Run Code Online (Sandbox Code Playgroud)

尽管如此,笔记本中的其余代码此后仍可以正常执行。但是,当我尝试创建新的笔记本文件时,此错误不允许我创建它,并且出现以下错误:

Error while saving file: python_notebook_ollie/Untitled2.ipynb disk I/O error
Traceback (most recent call last):
  File "/work/ollie/muali/miniconda3/lib/python3.6/site-packages/notebook/services/contents/filemanager.py", line 421, in save
    self.check_and_sign(nb, path)
  File "/work/ollie/muali/miniconda3/lib/python3.6/site-packages/notebook/services/contents/manager.py", line 440, in check_and_sign
    self.notary.sign(nb)
  File "/work/ollie/muali/miniconda3/lib/python3.6/site-packages/nbformat/sign.py", line 449, in sign
    self.store.store_signature(signature, self.algorithm)
  File "/work/ollie/muali/miniconda3/lib/python3.6/site-packages/nbformat/sign.py", line 207, in store_signature
    if not self.check_signature(digest, algorithm):
  File "/work/ollie/muali/miniconda3/lib/python3.6/site-packages/nbformat/sign.py", line 241, in check_signature
    self.db.commit()
sqlite3.OperationalError: disk I/O error …
Run Code Online (Sandbox Code Playgroud)

python jupyter-notebook

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

如何在 Python 中的这个嵌套字典中搜索特定键?

我是编程新手,我正在尝试从 Amazon MWS API 中提取值。它返回我见过的最大的嵌套字典,但我无法弄清楚如何遍历它以找到我需要的值。

例子:

{'Products': {'Product': {'AttributeSets': {'ItemAttributes': {'Binding': {'value': 'Video '
                                                                                'Game'},
                                                           'Brand': {'value': 'Nintendo'},
                                                           'Color': {'value': 'blue'},
                                                           'ESRBAgeRating': {'value': 'Everyone'},
                                                           'HardwarePlatform': {'value': 'Android/iOS'},
                                                           'IsAdultProduct': {'value': 'false'},
                                                           'ItemDimensions': {'Height': {'Units': {'value': 'inches'},
                                                                                         'value': '5.00'},
                                                                              'Length': {'Units': {'value': 'inches'},
                                                                                         'value': '5.00'},
                                                                              'Weight': {'Units': {'value': 'pounds'},
                                                                                         'value': '0.10'},
                                                                              'Width': {'Units': {'value': 'inches'},
                                                                                        'value': '2.00'}},
                                                           'Label': {'value': 'Nintendo'},
                                                           'Languages': {'Language': {'Name': {'value': 'english'},
                                                                                      'Type': {'value': 'Unknown'}}},
                                                           'ListPrice': {'Amount': {'value': '34.99'},
                                                                         'CurrencyCode': {'value': 'USD'}},
                                                           'Manufacturer': {'value': 'Nintendo'},
                                                           'Model': {'value': 'PMCAPBAA'},
                                                           'OperatingSystem': …
Run Code Online (Sandbox Code Playgroud)

python dictionary nested python-3.x amazon-mws

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

是否可以在gdata-python-client中使用"域范围授权"?

我使用的gdata-python-client访问谷歌域共享联系人API.

在企业应用程序中,您可能希望以编程方式访问用户数据,而无需他们进行任何手动授权.

有一个名为2LO(2脚OAuth)的协议,但似乎它与不推荐使用的OAuth1相关联:"重要:不推荐使用OAuth 1.0,并关闭新OAuth 1.0客户端的注册." 遍布Oauth1文档.

有一个新的基于OAuth2的" 域范围授权 "配方:

在Google Apps域中,域管理员可以向第三方应用程序授予对其用户数据的域范围内访问权限 - 这称为域范围的授权.要以这种方式委派权限,域管理员可以将服务帐户与OAuth 2.0一起使用.

这适用google-api-python-client但不适用gdata-python-client.

问题:有没有办法用Python实现这一目标?似乎来自gdata客户端的代码是史前的 - 是否有任何其他GAE运行时具有支持数据API委派的现代客户端库?

[更新]

如果我签署一个httplib2连接并调用Atom端点,我就可以检索该源.

http = httplib2.Http()
http = credentials.authorize(http)
resp, content = http.request(
    'https://www.google.com/m8/feeds/contacts/default/full', 'GET'
)
Run Code Online (Sandbox Code Playgroud)

不幸的是gdata-python-client使用httplib而不是httplib2.

[解决了]

也许我错过了一些步骤,但在我们使用httplib2执行调用之前看起来令牌无效.我必须在运行[aeijdenberg]的答案中给出的样本之前运行上面的代码,否则我得到401.

python google-oauth

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