什么是pep8兼容的深入字典访问方式?
dct = {
'long_key_name_one': {
'long_key_name_two': {
'long_key_name_three': {
'long_key_name_four': {
'long_key_name_five': 1
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
E501线太长(118> 80个字符)
print dct['long_key_name_one']['long_key_name_two']['long_key_name_three']['long_key_name_four']['long_key_name_five']
Run Code Online (Sandbox Code Playgroud)
'['之前的E211空格
print dct['long_key_name_one']['long_key_name_two']\
['long_key_name_three']['long_key_name_four']['long_key_name_five']
Run Code Online (Sandbox Code Playgroud)
E124闭合支架与视觉压痕不匹配
print dct['long_key_name_one']['long_key_name_two'
]['long_key_name_three']['long_key_name_four']['long_key_name_five']
Run Code Online (Sandbox Code Playgroud)
这通过了pep8,但似乎不太理想
print dct['long_key_name_one']['long_key_name_two'][
'long_key_name_three'
]['long_key_name_four']['long_key_name_five']
Run Code Online (Sandbox Code Playgroud)
有没有办法打破这条线,使它看起来不错,符合pep8?
有没有人知道如何从SQL Alchemy查询ResultProxy对象获取行计数而不循环结果集?ResultProxy.rowcount属性显示0,我希望它的值为2.对于更新,它显示受影响的行数,这是我所期望的.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine(
'oracle+cx_oracle://user:pass@host:port/database'
)
session = sessionmaker(
bind = engine
, autocommit = False
, autoflush = False
)()
sql_text = u"""
SELECT 1 AS Val FROM dual UNION ALL
SELECT 2 AS Val FROM dual
"""
results = session.execute(sql_text)
print '%s rows returned by query...\n' % results.rowcount
print results.keys()
for i in results:
print repr(i)
Run Code Online (Sandbox Code Playgroud)
输出:
0 rows returned by query...
[u'val']
(1,)
(2,)
Run Code Online (Sandbox Code Playgroud) 我有一个实用程序类,使得Python字典在获取和设置属性方面的行为有点像JavaScript对象.
class DotDict(dict):
"""
a dictionary that supports dot notation
as well as dictionary access notation
usage: d = DotDict() or d = DotDict({'val1':'first'})
set attributes: d.val2 = 'second' or d['val2'] = 'second'
get attributes: d.val2 or d['val2']
"""
__getattr__ = dict.__getitem__
__setattr__ = dict.__setitem__
__delattr__ = dict.__delitem__
Run Code Online (Sandbox Code Playgroud)
我想这样做它也将嵌套的字典转换成DotDict()实例.我希望能够做这样的事有__init__或__new__,但我还没有拿出任何的工作原理:
def __init__(self, dct):
for key in dct.keys():
if hasattr(dct[key], 'keys'):
dct[key] = DotDict(dct[key])
Run Code Online (Sandbox Code Playgroud)
如何递归地将嵌套字典转换为DotDict()实例?
>>> dct = {'scalar_value':1, 'nested_dict':{'value':2}}
>>> dct = DotDict(dct)
>>> print dct
{'scalar_value': …Run Code Online (Sandbox Code Playgroud) 为什么Python中的dir()函数没有显示所有可调用属性?
import win32com.client
iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Application")
currentTrack = win32com.client.CastTo(iTunes.CurrentTrack,"IITFileOrCDTrack")
print dir(currentTrack)
Run Code Online (Sandbox Code Playgroud)
结果:
['AddArtworkFromFile', 'CLSID', 'Delete', 'GetITObjectIDs', 'Play', 'Reveal', 'UpdateInfoFromFile', 'UpdatePodcastFeed', '_ApplyTypes_', '__doc__', '__eq__', '__getattr__', '__init__', '__module__', '__ne__', '__repr__', '__setattr__', '_get_good_object_', '_get_good_single_object_', '_oleobj_', '_prop_map_get_', '_prop_map_put_', 'coclass_clsid']
print currentTrack.Location
Run Code Online (Sandbox Code Playgroud)
位置可调用并返回文件路径,但未在第一个结果中列出.它也没有显示代码完成工具.是因为它是通过getter方法获取的吗?我看到它列在_prop_map_get_和_prop_map_put_下.
另外,当currentTrack._prop_map_get _ ['Location']返回"(1610874880,2,(8,0),(),'Location',None)时,currentTrack.Location为什么会返回文件路径?" 它在哪里获取文件路径字符串?
在使用开发服务器运行web.py应用程序时,如何摆脱favicon的404错误?
"HTTP/1.1 GET /" - 200 OK
"HTTP/1.1 GET /favicon.ico" - 404 Not Found
Run Code Online (Sandbox Code Playgroud)
我能找到的关于消除此错误的所有内容都与在Apache配置中指定资源的路径有关.这显然对开发服务器用例没有帮助.有没有办法在urls元组中指定静态资源?您可以在web.py应用程序中定义文档根目录吗?
可能重复:
Python:单个程序实例
我需要阻止cron作业在作业需要更长时间才能完成而不是启动器间隔时运行并发实例.我正在尝试使用flock概念来实现这一点,但fcntl模块的行为并不像我期望的那样.
任何人都可以告诉我为什么这可以防止两个并发实例:
import sys
import time
import fcntl
file_path = '/var/lock/test.py'
file_handle = open(file_path, 'w')
try:
fcntl.lockf(file_handle, fcntl.LOCK_EX | fcntl.LOCK_NB)
print 'no other instance is running'
for i in range(5):
time.sleep(1)
print i + 1
except IOError:
print 'another instance is running exiting now'
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用:
import sys
import time
import fcntl
def file_is_locked(file_path):
file_handle = open(file_path, 'w')
try:
fcntl.lockf(file_handle, fcntl.LOCK_EX | fcntl.LOCK_NB)
return False
except IOError:
return True
file_path = '/var/lock/test.py'
if file_is_locked(file_path):
print 'another instance is …Run Code Online (Sandbox Code Playgroud) 我一直在寻找一种在Google App Engine中进行基于cookie的身份验证/会话的方法,因为我不喜欢基于memcache的会话的想法,我也不喜欢强迫用户创建谷歌帐户的想法使用网站.我偶然发现了某人的帖子,其中提到了Tornado框架中的一些已签名的cookie函数,它看起来就像我需要的那样.我想到的是将用户的id存储在防篡改cookie中,并且可能使用装饰器来请求处理程序来测试用户的身份验证状态,并且作为附带好处,用户ID将可用于请求处理程序数据存储工作等.该概念类似于ASP.NET中的表单身份验证.此代码来自Tornado框架的web.py模块.
根据文档字符串,它"标记和时间戳一个cookie,因此它不能伪造"和"返回给定的签名cookie,如果它验证,或无."
我试图在App Engine项目中使用它,但我不明白尝试让这些方法在请求处理程序的上下文中工作的细微差别.有人能告诉我正确的方法,而不会失去FriendFeed开发人员投入的功能吗?set_secure_cookie和get_secure_cookie部分是最重要的部分,但是能够使用其他方法也是很好的.
#!/usr/bin/env python
import Cookie
import base64
import time
import hashlib
import hmac
import datetime
import re
import calendar
import email.utils
import logging
def _utf8(s):
if isinstance(s, unicode):
return s.encode("utf-8")
assert isinstance(s, str)
return s
def _unicode(s):
if isinstance(s, str):
try:
return s.decode("utf-8")
except UnicodeDecodeError:
raise HTTPError(400, "Non-utf8 argument")
assert isinstance(s, unicode)
return s
def _time_independent_equals(a, b):
if len(a) != len(b):
return False
result = 0
for x, y in zip(a, b):
result …Run Code Online (Sandbox Code Playgroud) cookies session google-app-engine forms-authentication tornado
我在SDK Store中访问AWS凭据时遇到了一些问题,但在IIS下运行时似乎只是一个问题.如果我通过使用ReSharper调用NUnit测试来执行相同的代码,则依赖项注入将起作用,并且S3客户端可以进行身份验证.
IAmazonS3 s3Client = new AmazonS3Client();
Run Code Online (Sandbox Code Playgroud)
有没有其他人遇到这个问题?你是如何让依赖注入工作的?
[编辑]
建议将凭证文件方法与IIS一起使用,因为SDK Store会以不同方式为每个用户加密凭据.如果我在appSettings中硬编码我不想做的路径,我只能获得一个凭证文件.
除了下面的路径,SDK会在哪里查找凭证文件?
C:\Users\<IIS_app_name>\.aws\credentials
C:\Users\<my_domain_user>\.aws\credentials
Run Code Online (Sandbox Code Playgroud) 我需要能够将平面xml数据集转换为html表,并且我很难找到符合我需要的语法示例.我想使用一个样式表,可以将类似的数据集转换为带有可变列的html表.这意味着除了"行"和"行"之外,它不能使用任何硬编码元素名称.
我之后的样式表将能够转换:
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<AccountId>BlPUAA0</AccountId>
<AccountName>Initech</AccountName>
<AcocuntStatus>Client</AcocuntStatus>
</row>
<row>
<AccountId>CJxIAAW</AccountId>
<AccountName>Intertrode</AccountName>
<AcocuntStatus>Prospect</AcocuntStatus>
</row>
</rows>
Run Code Online (Sandbox Code Playgroud)
成:
<table>
<tr>
<th>AccountId</th>
<th>AccountName</th>
<th>AcocuntStatus</th>
</tr>
<tr>
<td>BlPUAA0</td>
<td>Initech</td>
<td>Client</td>
</tr>
<tr>
<td>CJxIAAW</td>
<td>Intertrode</td>
<td>Client</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
还有这个:
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<AccountId>BlPUAA0</AccountId>
<AccountName>Initech</AccountName>
</row>
<row>
<AccountId>CJxIAAW</AccountId>
<AccountName>Intertrode</AccountName>
</row>
</rows>
Run Code Online (Sandbox Code Playgroud)
进入这个:
<table>
<tr>
<th>AccountId</th>
<th>AccountName</th>
</tr>
<tr>
<td>BlPUAA0</td>
<td>Initech</td>
</tr>
<tr>
<td>CJxIAAW</td>
<td>Intertrode</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud) 有没有人能够让 suds 肥皂库与 NetSuite WSDL 一起使用?当我尝试创建客户端时出现此错误。
from suds.client import Client
#url = 'http://mssoapinterop.org/asmx/simple.asmx?WSDL'
url = 'https://webservices.netsuite.com/wsdl/v2009_2_0/netsuite.wsdl'
client = Client(url)
print client
Traceback (most recent call last):
client = Client(url)
File "build\bdist.win32\egg\suds\client.py", line 112, in __init__
File "build\bdist.win32\egg\suds\reader.py", line 152, in open
File "build\bdist.win32\egg\suds\wsdl.py", line 158, in __init__
File "build\bdist.win32\egg\suds\wsdl.py", line 207, in resolve
File "build\bdist.win32\egg\suds\wsdl.py", line 662, in resolve
File "build\bdist.win32\egg\suds\wsdl.py", line 757, in resolvefaults
Exception: fault 'ExceededRecordCountFault' not defined in portType 'NetSuitePortType'
Run Code Online (Sandbox Code Playgroud)