小编Ben*_*enH的帖子

将所有STDIN"啜饮"成字符串的最有效方法

我正在为python 2.7编写一个电子邮件解析器,它将使用别名通过sendmail调用,使用电子邮件模块解析,然后处理并存储到oracle数据库中:

来自/ etc/aliases:

myalias:| /my/python/script.py

我无法将所有stdin"sl"到一个字符串对象中,我可以将其与电子邮件模块一起使用:

import email

# Slurp stdin and store into message
message =

msg = email.message_from_string(message)

# Do something with it
print msg['Subject']
Run Code Online (Sandbox Code Playgroud)

最有效的方法是什么?我已经尝试过stdin.readlines()但它最终成为一个列表.

感谢任何帮助.(对不起,如果这是noobish ...我是一个perl转换器,并被迫使用python标准化我的工具,这只是我的第二个脚本.好吧不是真的"强迫",我一直想要这样做一段时间但不是像现在这样的截止日期之枪

python email io stdin python-2.7

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

使用boto3验证没有GET或PUT的S3凭证

有没有办法验证一组给定的S3凭证是否可以访问特定的存储桶而无需进行某种显式的PUT或GET?

实例化s3.Client,s3.Resource或s3.Bucket对象似乎根本不验证凭据,更不用说桶访问了.

boto3 1.4.7.python 2.7.13.

我们有自动化和编排,可以自动创建存储桶,我希望包含一个验证用户访问密钥和密钥的部分.我知道自从我创建它以来,存在这个存储桶.水桶是空的.

我想验证用户是否具有访问PUT操作的权限.

谢谢你的帮助.

*更新*

我最终使用s3.Client对象执行此操作:

objects = client.list_objects(Bucket=cfg['bucket'])
Run Code Online (Sandbox Code Playgroud)

由于铲斗是空的,因此这是一种轻型操作,并且大部分都是单行程.(包裹在try块中)

amazon-s3 amazon-web-services python-2.7 boto3

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

在Python中构建多行数据库查询

遇到了一个问题,而且一开始看起来很简单。

我想这样做(为了简洁起见,查询已被简化,它实际上更长且更复杂):

    query  = ("""INSERT INTO %s " % cfg['mysql.table']
              "('hostname', 'timestamp', 'metric', 'average', 'peakhigh', 'peaklow', 'gsamp', 'zsamp', 'nsamp')"""
              "VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s )"
             )   
Run Code Online (Sandbox Code Playgroud)

那么如何将 STR_TO_DATE 合并到时间戳字段的查询中呢?

谢谢你的帮助。

mysql python-2.7

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

我可以用2个键对对象列表进行排序吗?

我有以下课程(修剪):

class DiskInstance(object):

    def __init__(self, name, epoch, size)
        self.name   = name
        self.epoch  = epoch
        self.size   = size
Run Code Online (Sandbox Code Playgroud)

然后我定义了一个外部函数(上面的类外部):

def getepoch(object):
    return object.epoch
Run Code Online (Sandbox Code Playgroud)

然后我实例化该类的几个对象并附加到名为DISKIMAGES的列表中.

我目前正在这样排序:

for image in sorted(DISKIMAGES, key=getedate, reverse=True):
Run Code Online (Sandbox Code Playgroud)

有什么方法可以先按getedate排序,然后按尺寸排序?

感谢任何帮助.

python python-2.6

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

类继承问题

我正在尝试创建一个扩展HTTPBasicAuthHandler的类.出于某种原因,我在旧代码中使用的相同方法在这里不起作用.

class AuthInfo(urllib2.HTTPBasicAuthHandler):
    def __init__(self, realm, url, username, password):
        self.pwdmgr     = urllib2.HTTPPasswordMgrWithDefaultRealm()
        self.pwdmgr.add_password(None, url, username, password)
        super(AuthInfo, self).__init__(self.pwdmgr)
Run Code Online (Sandbox Code Playgroud)

这是错误:

Traceback (most recent call last):
  File "./RestResult.py", line 67, in ?
    auth = AuthInfo(None, "default", "xxxxx", "xxxxxxxx")
  File "./RestResult.py", line 47, in __init__
    super(AuthInfo, self).__init__(self.pwdmgr)
TypeError: super() argument 1 must be type, not classobj
Run Code Online (Sandbox Code Playgroud)

python urllib2 python-2.4

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

如何使用一个for循环迭代2个词典?

我有两个数据结构,如下所示:

DATASET_0 = { 'key1': [ object1, object2, objectN ],
              'key2': [ object3, object4]
            }
DATASET_1 = { 'key1': [ object5, object6, objectN ],
              'key3': [ object7, object8],
              'key4': [ object9, object10],
            }
Run Code Online (Sandbox Code Playgroud)

(这是一个高度简化的版本,但它显示了两个顶级组件 - 基本上是列表的字典)

因此,相同的键可能会出现在两个词典中,但指向不同的对象.通常我可以动态合并两个字典并迭代合并但在这种情况下我不能这样做.我不能把顶级项目列为一个列表.

如果顶级项目是列表,我可以这样做:

for item in DATASET_0 + DATASET_1:
    blah
Run Code Online (Sandbox Code Playgroud)

无论如何使用词典做同样的事情?

python python-2.7

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

Python包命名和导入

我有一个名为foo的包.它的组织如下:

package_dir/foo/foo.py
package_dir/foo/utils.py
package_dir/foo/other.py
package_dir/foo/__init__.py
Run Code Online (Sandbox Code Playgroud)

我可能应该将foo.py命名为其他东西,但是这个库随着时间的推移而发展和演变,现在支持其他东西并且现在全部使用.该软件包被捆绑并存储在我们内部的pipy服务器上,因此在安装时,我最终得到/usr/lib/python2.7/site-packages/foo.

从这个包中导入的最佳方法是什么?

目前我这样做:

import foo
Run Code Online (Sandbox Code Playgroud)

然后我最终在客户端代码中执行此操作:

foo.foo.myfunction()
Run Code Online (Sandbox Code Playgroud)

有许多类和函数可用于使用此方法:

from foo import blah, blah, blah
Run Code Online (Sandbox Code Playgroud)

这有点笨拙.这是包装的pythonic方法吗?有一个更好的方法吗?

感谢任何帮助.

*更新*

所以我已经完成了这个,但它没有找到我的功能:

from __init__.py:

import foo
import utils
import other
Run Code Online (Sandbox Code Playgroud)

然后我像这样导入:

import foo
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中我尝试过:

foo.myfunc()
Run Code Online (Sandbox Code Playgroud)

并且:

myfunc()
Run Code Online (Sandbox Code Playgroud)

两人抱怨:

AttributeError: 'module' object has no attribute 'myfunc'
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

在__init__内终止对象创建的正确方法

这样做的最佳方法是什么?我有一个类对传递的参数进行一些完整性检查,如果某些操作未通过检查,我想创建对象失败,以便我可以在调用段中测试它.

例:

class DoSomething(object):

    def __init__(self, _x, _y, _z)
        if _x < 0:
            return None
        #snip

    @property
    def x(self):
        return x

a = DoSomething(-1, 1, 2)

if not a:
    print "error"
else:
    print a.x
Run Code Online (Sandbox Code Playgroud)

运行时,a仍然是一个"有效"对象,因此执行"print ax"并抛出此错误:

Traceback (most recent call last):
  File "./c.1", line 19, in <module>
    print a.x
  File "./c.1", line 11, in x
    return x
NameError: global name 'x' is not defined
Run Code Online (Sandbox Code Playgroud)

我想避免定义和提出自己的例外.我有什么方法可以做到这一点吗?

谢谢!

python python-2.7

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