相关疑难解决方法(0)

像属性一样访问dict键?

我发现访问dict密钥更加方便,obj.foo而不是obj['foo'],所以我写了这个代码片段:

class AttributeDict(dict):
    def __getattr__(self, attr):
        return self[attr]
    def __setattr__(self, attr, value):
        self[attr] = value
Run Code Online (Sandbox Code Playgroud)

但是,我认为必须有一些原因,Python不提供开箱即用的功能.以这种方式访问​​dict密钥有什么警告和陷阱?

python syntax dictionary

273
推荐指数
16
解决办法
16万
查看次数

Python:你如何保存简单的设置/配置文件?

我不在乎,如果是JSON,pickle,YAML,或什么的.

我见过的所有其他实现都不是向前兼容的,所以如果我有一个配置文件,在代码中添加一个新密钥,然后加载该配置文件,它就会崩溃.

有没有简单的方法来做到这一点?

python settings ini json config

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

使用Python将ini文件中的所有内容读入字典

通常,我按如下方式编码,以获取变量中的特定项目,如下所示

try:
    config = ConfigParser.ConfigParser()
    config.read(self.iniPathName)
except ConfigParser.MissingSectionHeaderError, e:
    raise WrongIniFormatError(`e`)

try:
    self.makeDB = config.get("DB","makeDB")
except ConfigParser.NoOptionError:
    self.makeDB = 0
Run Code Online (Sandbox Code Playgroud)

有没有办法读取python字典中的所有内容?

例如

[A]
x=1
y=2
z=3
[B]
x=1
y=2
z=3

被写入

val["A"]["x"] = 1
...
val["B"]["z"] = 3

python ini configuration-files

20
推荐指数
4
解决办法
4万
查看次数

python 脚本无限期运行时如何刷新 boto3 凭据

我正在尝试编写一个 python 脚本,该脚本使用 watchdog 来查找文件创建并使用 boto3 将其上传到 s3。但是,我的 boto3 凭据每 12 小时就会过期,因此我需要更新它们。我将我的 boto3 凭据存储在~/.aws/credentials. 所以现在我正在尝试捕获S3UploadFailedError、更新凭据并将它们写入~/.aws/credentials. 但是,尽管凭证正在更新,但我boto3.client('s3')再次调用它的抛出异常。

我究竟做错了什么?或者我该如何解决?

下面是代码片段

try:
     s3 = boto3.client('s3')
     s3.upload_file(event.src_path,'bucket-name',event.src_path)

except boto3.exceptions.S3UploadFailedError as e:
     print(e)
     get_aws_credentials()
     s3 = boto3.client('s3')

Run Code Online (Sandbox Code Playgroud)

python-3.x python-watchdog boto3

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

行为:访问步骤定义之外的 context.config 变量

我无法找到一种方法如何使用beeve.iniApiClient的值来初始化我的context.config.userdata['url']

行为.ini

[behave.userdata]
url=http://some.url
Run Code Online (Sandbox Code Playgroud)

步骤.py

from behave import *
from client.api_client import ApiClient

# This is where i want to pass the config.userdata['url'] value
api_calls = ApiClient('???') 


@given('I am logged as "{user}" "{password}"')
def login(context, user, password):
    context.auth_header = api_calls.auth(user, password)
Run Code Online (Sandbox Code Playgroud)

api_client.py

class ApiClient(object):

    def __init__(self, url):
        self.url = url

    def auth(self, email, password):
        auth_payload = {'email': email, 'password': password}
        auth_response = requests.post(self.url + '/api/auth/session', auth_payload)

        return auth_response.text
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-behave

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