小编Pra*_*gam的帖子

使用boto3检查s3中存储桶中是否存在密钥

我想知道boto3中是否存在密钥.我可以循环存储桶内容并检查密钥是否匹配.

但这似乎更长,而且有点矫枉过正.Boto3官方文档明确说明了如何做到这一点.

可能是我错过了显而易见的事.任何人都可以指出我如何实现这一目标.

python amazon-s3 boto3

125
推荐指数
13
解决办法
11万
查看次数

无法安装boto3

我在虚拟环境中安装boto3时遇到问题.

我已经完成了文件所说的内容.首先我激活了虚拟环境.然后我做了一个:

Sudo pip install boto3
Run Code Online (Sandbox Code Playgroud)

现在我进入python

>> import boto3
ImportError: No module named boto3
Run Code Online (Sandbox Code Playgroud)

但是如果我导入boto,它就可以了

>> import boto
>> boto.Version
'2.38.0'
Run Code Online (Sandbox Code Playgroud)

为什么安装boto3时会安装boto 2.38.我试着关闭终端并重新打开它.我应该重启Ubuntu机器吗?

python virtualenv boto3

38
推荐指数
6
解决办法
10万
查看次数

如何在亚马逊网络服务中从boto3生成网址

我在s3中有一个Bucket,我试图拉出那里的图像的url.

我正在使用boto3和boto3似乎没有实现生成url方法.

他们有一个核心方法,生成这样的URL,

import botocore.session

session = botocore.session.get_session()
client = session.create_client('s3')

presigned_url = client.generate_presigned_url(
    'get_object', Params={'Bucket': self.bucket_name, 'Key': self.key})
Run Code Online (Sandbox Code Playgroud)

我不得不做的一件事是,我必须使用会话对象发送参数和每个请求.并且上面的方法不允许我设置会话变量(即.. aws凭证)

我能得到的最接近的是这个

session = Session(aws_access_key_id='342342342342', aws_secret_access_key='3434234322', region_name='us-east-1')
    s3 = session.resource('s3')
    object = s3.Object('my-dev-bucket', 'amazonKeyString')
    print object.get()["Body"]
Run Code Online (Sandbox Code Playgroud)

这让我获得了亚马逊s3对象,这是一个被称为的对象

botocore.response.StreamingBody object at 0x7ffaff8cef50
Run Code Online (Sandbox Code Playgroud)

我可以这样得到图像的网址吗?

请帮助Prabhakar S.

python amazon-s3 boto3

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

如何在python中检查变量是否为enum类型

我有这样的枚举

@enum.unique
class TransactionTypes(enum.IntEnum):
    authorisation = 1
    balance_adjustment = 2
    chargeback = 3
    auth_reversal = 4
Run Code Online (Sandbox Code Playgroud)

现在我正在为此枚举分配一个变量

a = TransactionTypes
Run Code Online (Sandbox Code Playgroud)

我想检查'a'的类型,如果它是枚举和其他东西,如果它不是枚举,则做一些事情

我试过这样的事

if type(a) == enum:
    print "do enum related stuff"
else:
    print "do something else"
Run Code Online (Sandbox Code Playgroud)

问题是它不能正常工作.

enums typechecking python-2.7

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

在 django 中翻译动态内容

我有一篇文本,既有静态部分又有动态部分,如下所示。

Custom message with %(card_status)s text inside

我正在确定翻译文本的最佳方法是什么。

这就是我目前所拥有的,

{% blocktrans with obj.card_status as card_status %}Custom message with {{ card_status }} text inside{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,生成的消息是

msgid "Custom message with %(card_status)s text inside"
msgstr "This will be translated"
Run Code Online (Sandbox Code Playgroud)

但这种方法的问题是,无论 card_status 变量是什么,翻译后的文本都是相同的。

我尝试使用 msgid 手动枚举 django.po 文件,了解每个 card_status 的可能值。

但这并没有被考虑,例如,

msgid "Custom message with ACTIVE text inside"
msgstr "This will be translated with ACTIVE text"
Run Code Online (Sandbox Code Playgroud)

有人可以建议一种可以在这里使用的方法或技巧吗?我提到的堆栈中有很多类似的问题,但不知何故我无法获得我需要的解决方案。

希望有人能够一劳永逸地结束这个问题,让每个人都高兴。

django translation

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

使用 rsync 只同步被修改的文件

我正在尝试同步两个文件夹

/developer/shared(在 ubuntu 中)

当我在 中修改文件时/shared,我希望能够将文件复制到文件/developer夹中

我试过

rsync -r /shared /developer
Run Code Online (Sandbox Code Playgroud)

但它似乎复制了所有内容,尽管我只更改了那里的两个文件。

如何仅复制更改的文件。

我也试过

rsync -rtu /shared /developer
Run Code Online (Sandbox Code Playgroud)

不知何故,我无法理解这一点。

请帮忙。

ubuntu rsync

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

Hugo 报告端口 1313 已被使用。但它不是

Hugo server我尝试像往常一样运行该命令。但它给了我这个错误。

port 1313 already in use, attempting to use an available port
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x1654d87]
Run Code Online (Sandbox Code Playgroud)

我检查了端口使用情况是否使用netstat -ntlp,但在列表中没有发现任何内容。

我早些时候遇到过这个问题,当时,我只是使用 snap 包管理器卸载了hugo,然后再次重新安装。当时它起作用了。现在不行了。

我在这里缺少什么。注意:重新启动笔记本电脑也没有帮助。

port static hugo

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

Redis缓存的过期时间比设置的过期时间快很多

当尝试使用 python Redis 包从缓存中读取时,它显示为已过期。这会在设置缓存后 5 秒内发生。不过,5 秒内的任何读取都有效。

但密钥设置为 180 秒或 3 分钟后过期。这有可能吗?此外,在第一次写入后,redis 密钥不会被写入/失效。

import redis
time_to_expire_s=180
client = redis.StrictRedis(host=self.host, port=self.port, password=self.password)
client.set(key, zlib.compress(value.encode('utf-8')), ex=time_to_expire_s)
Run Code Online (Sandbox Code Playgroud)

这是奇怪的行为吗?设置为更长的缓存,如 3600(1 小时)解决了我的问题,但想知道为什么 3 分钟的缓存会在 5 秒后过期......

谢谢

python caching redis

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