通过管理多个Amazon Web Services(AWS)帐户的最佳方式是什么boto
?
我熟悉BotoConfig文件,我正在使用它.但是每个文件只描述一个帐户......而且我的工作不仅仅是一个组织.出于所有常见的法律,财务和安全原因,这些帐户不能混合使用.
目前我在boto
每个帐户使用一个配置文件.例如:
~/.boto
默认帐户~/.boto_clowncollege
为"clowncollege"帐户~/.boto_razorassoc
为"razorassoc"帐户~/.boto_xyz
为"xyz"帐户然后像:
def boto_config_path(account=None):
"""
Given an account name, return the path to the corresponding boto
configuration file. If no account given, return the default config file.
"""
path = '~/.boto' + ('_' + account if account else '')
clean_path = os.path.abspath(os.path.expanduser(path))
if os.path.isfile(clean_path):
return clean_path
else:
errmsg = "cannot find boto config file {} for {}".format(clean_path, account)
raise ValueError(errmsg)
def aws_credentials(account=None): …
Run Code Online (Sandbox Code Playgroud) 我想用Python创建一个简单的LOCAL Web应用程序.
Web服务器和"后端"代码将作为UI在同一系统(最初是Windows系统)上运行.我怀疑这很重要,但UI将是谷歌Chrome,HTML,CSS,JavaScript和jQuery的典型网络组合.
有一大堆基于Python的Web编程框架,但它们似乎都是为构建具有大量后端基础架构的复杂的大型应用程序而设计的.我想要相反:非常简单,轻量级,并且容易自包含 - 只需足够的Web服务器和框架来创建/支持本地Web应用程序.
建议?
感谢您的时间.
我正在编写一些代码来检查多组数据之间的相关性.当我使用原始数据时(我真的不确定它在那时的格式),它工作得很好,但是在使用Decimal模块通过某些方程式运行数据之后,数据集在测试时不会显示用于相关
我觉得非常愚蠢和新lol,我相信这是一个非常容易解决的问题.
这是我写的一个小程序来演示我的意思.
from decimal import Decimal
import numpy as np
import pandas as pd
a = [Decimal(2.3), Decimal(1.5), Decimal(5.7), Decimal(4.6), Decimal(5.5), Decimal(1.5)]
b = [Decimal(2.1), Decimal(1.2), Decimal(5.3), Decimal(4.4), Decimal(5.3), Decimal(1.7)]
h = [2.3,1.5,5.7,4.6,5.5,1.5]
j = [2.1,1.2,5.3,4.4,5.3,1.7]
corr_data1 = pd.DataFrame({'A': a, 'B': b})
corr_data2 = corr_data1.corr()
print(corr_data2)
corr_data3 = pd.DataFrame({'H': h, 'J': j})
corr_data4 = corr_data3.corr()
print(corr_data4)
Run Code Online (Sandbox Code Playgroud)
列表A和B以及H&F的数据完全相同,A和B的唯一区别是十进制格式数字,而H&F则不是.
程序运行时,A&B返回:
Empty DataFrame
Columns: []
Index: []
Run Code Online (Sandbox Code Playgroud)
和H&J回报:
H J
H 1.000000 0.995657
J 0.995657 1.000000
Run Code Online (Sandbox Code Playgroud)
我怎么做到这样我可以在运行我的方程后使用数据?
抱歉这个愚蠢的问题,谢谢你的时间.我希望你们一切顺利,节日快乐!
tostring()
当只打印部分文档时,lxml的功能似乎很破碎.见证人:
from lxml.html import fragment_fromstring, tostring
frag = fragment_fromstring('<p>This stuff is <em>really</em> great!')
em = frag.cssselect('em').pop(0)
print tostring(em)
Run Code Online (Sandbox Code Playgroud)
我希望<em>really</em>
,而是它打印<em>really</em> great!
这是错误的.最棒的 !' 是未选定的一部分em
.它不仅是错误的,它还是一种药丸,至少对于处理文档结构化的XML而言,这种结尾的文本很常见.
据我了解,lxml存储在元素.tail
属性中当前元素之后的任何自由文本.扫描代码tostring()
将我带到ElementTree.py的_write()
函数,它显然总是打印尾部.这是整个树的正确行为,但在渲染子树时不是最后一个元素,但它没有区别.
为了获得所选XML的正确无尾渲染,我尝试toxml()
从头开始编写一个函数来代替它.它基本上有效,但在处理注释,处理指令,命名空间,编码,yadda yadda时有许多特殊情况.所以我改变了方向,现在只需搭载tostring()
,对其输出进行后处理以删除有问题的.tail
文本:
def toxml(e):
""" Replacement for lxml's tostring() method that doesn't add spurious
tail text. """
from lxml.etree import tostring
xml = tostring(e)
if e.tail:
xml = xml[:-len(e.tail)]
return xml
Run Code Online (Sandbox Code Playgroud)
一系列基本测试表明这很有效.
批评和/或建议?
我希望我的Python程序能够像AppleScript一样,就像Objective C程序一样.那可能吗?
(注意,这不是关于从Python程序运行AppleScript,也不是关于通过Unix程序调用从AppleScript调用Python程序.这些都很简单.我需要程序操作的真正AppleScriptability.)
有一些关于如何执行此操作的文档.例如,Python 2.7.2文档描述了MiniAEFrame,但即使是对from MiniAEFrame import AEServer, MiniApplication
模具的最小引用,ImportError
也存在无法找到合适图像的抱怨/我的架构(x86)不受支持.车辙!似乎MiniAEFrame可能与早期("Carbon")API集有关.换句话说,已经过时了.
有一篇非常好的文章关于"使用PyObjC用Python开发Cocoa应用程序"(http://developer.apple.com/cocoa/pyobjc.html).除了它是在2005年写的; 我最近更新的Xcode(4.1)版本没有它描述的任何选项; 它提供的Xcode项目文件在令人印象深刻的构建失败中爆炸; 最近的PyObjC更新似乎是在2年前完成的.Apple似乎已经删除了所有允许您在AppleScript或Python中构建"真实"应用程序的功能,只留下了Objective C.
那么,我的选择是什么?是否仍然可以使用Python构建一个真正的AppleScriptable Mac应用程序?如果是这样,怎么样?
(如果重要的话,我需要AppleScripted是文本插入.我需要Dragon Dicate才能在我的应用程序中添加文本.我目前正在使用Tk作为其UI框架,但很乐意使用本机Cocoa/Xcode API /工具,如果这会有所帮助.)
有许多Python模块用于解析和协调命令行选项(argparse,getopt,blargs等).Python拥有良好的内置功能/习惯用于处理各种函数参数(例如,默认值,*varargs,**keyword_args).但是,当我阅读各种项目的顶级函数代码时,我发现函数参数的规则和标准化明显少于命令行参数.
对于简单的功能,这不是问题; 内置的参数功能非常有用,并且绰绰有余.但是有很多功能丰富的模块,它们的顶层函数提供了许多不同的参数和选项(一些互补或独占),不同的操作模式,默认值,过载等等 - 也就是说,它们具有参数复杂性接近命令行参数.他们似乎在很大程度上以临时方式处理他们的论点.
鉴于命令行处理模块的数量,以及它们随着时间的推移变得多么精致,我期望至少有一些模块可以简化复杂函数参数的争论.但我搜索了PyPi,stackoverflow和谷歌没有成功.那么......你会推荐使用函数(不是命令行!)参数处理模块吗?
---用例子更新---
很难给出一个真正简单的具体示例,因为在处理复杂模块之前,用例不会出现.但是这里是解释代码中的问题的一个镜头:一个格式化程序模块,其默认值可以在格式化程序实例化中重写,或者在调用函数/方法时.由于只有几个选项,已经有大量的选项处理措辞,并且选项名称会重复出现令人作呕.
defaults = { 'indent': 4,
'prefix': None,
'suffix': None,
'name': 'aFormatter',
'reverse': False,
'show_name': False
}
class Formatter(object):
def __init__(self, **kwargs):
self.name = kwargs.get('name', defaults['name'])
self.indent = kwargs.get('indent', defaults['indent'])
self.prefix = kwargs.get('prefix', defaults['prefix'])
self.suffix = kwargs.get('suffix', defaults['suffix'])
self.reverse = kwargs.get('reverse', defaults['reverse'])
self.show_name = kwargs.get('show_name', defaults['show_name'])
def show_lower(self, *args, **kwargs):
indent = kwargs.get('indent', self.indent) or 0
prefix = kwargs.get('prefix', self.prefix)
suffix = kwargs.get('suffix', self.suffix)
reverse = kwargs.get('reverse', self.reverse)
show_name …
Run Code Online (Sandbox Code Playgroud) 我想使用travis来构建我的项目,我注意到它建立在Ubuntu上,我想知道是否可以使用CentOS VM构建?
有没有办法解析下面的时间而不使用hacky像s.spilt()
一堆次?
s = 'PT1H28M26S'
Run Code Online (Sandbox Code Playgroud)
我想得到:
num_mins = 88
Run Code Online (Sandbox Code Playgroud) 我正在尝试解析div
HTML 文档中的一个大标签,并且需要获取其所有 HTML 和嵌套标签div
。我的代码:
innerTree = fromstring(str(response.text))
print("The tags inside the target div are")
print innerTree.cssselect('div.story-body__inner')
Run Code Online (Sandbox Code Playgroud)
但它打印:
[<Element div at 0x66daed0>]
Run Code Online (Sandbox Code Playgroud)
我想让它返回里面所有的HTML标签?如何使用 LXML 做到这一点?
我写了一个简单的函数,将单词中的字母转换为它们的'leet'数字对应物.
def Leet(word):
letters = list(word.lower())
for n, letter, in enumerate(letters):
if letter == 'o':
letters[n]= '0'
elif letter == 'i':
letters[n]= '1'
elif letter == 'z':
letters[n]= '2'
elif letter == 'e':
letters[n]= '3'
elif letter == 'a':
letters[n]= '4'
elif letter == 's':
letters[n]= '5'
elif letter == 'g':
letters[n]= '6'
elif letter == 't':
letters[n]= '7'
elif letter == 'b':
letters[n]= '8'
return ''.join(letters)
Run Code Online (Sandbox Code Playgroud)
所以当我输入时'zit'
,程序将返回'217'
.
我的问题是,我该怎么改变它给我的每一个可能的置换('217'
,'2it'
,'z1t'
,'zi7' …
所以我试图从字典列表中使用Jinja2创建一个HTML表格(由Flask SQL select语句返回).
现在test_list已经存储了一个字典列表(键是DB列).
现在我用这个:
<table style="width:100%">
{% for dict_item in history_list %}
{% for key, value in dict_item.items() %}
<tr>
<th> {{ key }} </th>
<td> {{ value }} </td>
</tr>
{% endfor %}
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)
它确实有效,但它基本上产生了2列(一列是键,一列是列).我想将DB键作为表中的列标题,然后只是放入每列的值.
这可能吗?因为我想要只重复一次密钥?
我希望将数据表示为Python中的电子表格.想"好吧,有人肯定写了这样一个模块!" 我去了PyPI,在那里我找到了Tabular,它用强大的数据处理函数包装了NumPy的重排.大!可悲的是,当涉及到字符串时,它似乎根本就不像电子表格.
>>> import tabular as tb
>>> t = tb.tabarray(records=[('bork', 1, 3.5), ('stork', 2, -4.0)], names=['a','b','c'])
>>> t
tabarray([('bork', 1, 3.5), ('stork', 2, -4.0)],
dtype=[('a', '|S5'), ('b', '<i8'), ('c', '<f8')])
>>> t['a'][0] = 'gorkalork, but not mork'
>>> t
tabarray([('gorka', 1, 3.5), ('stork', 2, -4.0)],
dtype=[('a', '|S5'), ('b', '<i8'), ('c', '<f8')])
Run Code Online (Sandbox Code Playgroud)
嗯... tabarray!你在那里截断我的字符串!真?!NumPy dtype'| S5'表示字符串为5个或更少字符,但是加油!更新dtype.如果需要,重新格式化整个列.随你.但是不要默默地扔掉我的数据!
我尝试了其他几种方法,其中没有一种可以解决问题.例如,它在tabarray创建时直观了数据类型/大小,但在添加记录时却没有:
>>> t.addrecords(('mushapushalussh', 3, 4.44))
tabarray([('gorka', 1, 3.5), ('stork', 2, -4.0), ('musha', 3, 4.44)],
dtype=[('a', '|S5'), ('b', '<i8'), ('c', '<f8')])
Run Code Online (Sandbox Code Playgroud)
我尝试切出整个列,更改其类型,设置值并重新分配:
>>> firstcol_long = …
Run Code Online (Sandbox Code Playgroud)