小编joh*_*s85的帖子

使用Python通过MAPI从Outlook中读取电子邮件

我正在尝试编写一个简短的程序,它将读取我的Exchange/Outlook配置文件中的文件夹中的电子邮件内容,以便我可以操作数据.但是我在查找有关python和Exchange/Outlook集成的大量信息时遇到了问题.很多东西要么很老/没有文档/没有解释.我尝试了几个片段,但似乎得到了同样的错误.我试过Tim Golden的代码:

import win32com.client

session = win32com.client.gencache.EnsureDispatch ("MAPI.Session")

#
# Leave blank to be prompted for a session, or use
# your own profile name if not "Outlook". It is also
# possible to pull the default profile from the registry.
#
session.Logon ("Outlook")
messages = session.Inbox.Messages

#
# Although the inbox_messages collection can be accessed
# via getitem-style calls (inbox_messages[1] etc.) this
# is the recommended approach from Microsoft since the
# Inbox can mutate while you're iterating.
# …
Run Code Online (Sandbox Code Playgroud)

python mapi outlook exchange-server cdo.message

40
推荐指数
3
解决办法
10万
查看次数

模块导入时执行代码是否可以?

我正在设计一个小的GUI应用程序来包装一个sqlite DB(简单的CRUD操作).我已经创建了三个SQLAlchemy的模型(m_person,m_card.py,m_loan.py,全部在/models文件夹中)和以前曾在每一个顶部以下代码:

from sqlalchemy import Table, Column, create_engine
from sqlalchemy import Integer, ForeignKey, String, Unicode
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import backref, relation

engine = create_engine("sqlite:///devdata.db", echo=True)
declarative_base = declarative_base(engine)
metadata = declarative_base.metadata
Run Code Online (Sandbox Code Playgroud)

这感觉有点不对(干)所以有人建议我将所有这些东西移到模块级别(进入models/__init__.py).

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Table, Column, Boolean, Unicode
from settings import setup

engine = create_engine('sqlite:///' + setup.get_db_path(), echo=False)
declarative_base = declarative_base(engine)
metadata = declarative_base.metadata …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy declarative relational-database python-import

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

使用循环将值分配给列表中的变量

var_list = [one, two, three]
num = 1
for var in var_list:
    var = num
    num += 1
Run Code Online (Sandbox Code Playgroud)

上面给出了一个"一"不存在的错误.你不能这样分配吗?我想为列表中的每个var分配一个递增的数字.

python variables loops list

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

从主机查询docker嵌入的dns

有没有人知道查询docker守护程序使用的嵌入式DNS服务器的方法.我正在尝试使用packetbeats,如果我可以用容器名称替换docker ip地址,那将会非常有用.

我目前可以想到的唯一方法是在容器中创建一个dns服务器,可以将其配置为主机的dns服务器,以确保主机可以解析容器名称.希望有道理吗?

这是唯一的方式还是有其他选择?

我正在尝试查询的容器是使用docker-compose创建的.

dns docker packetbeat

8
推荐指数
2
解决办法
1851
查看次数

从主机访问 Docker 卷

我有一个看起来像这样的 docker 文件。如何从主机访问此卷?我检查了安装 Docker 的卷文件夹。

FROM busybox

MAINTAINER Erik Kaareng-sunde <esu@enonic.com>

RUN mkdir -p /enonic-xp/home
RUN adduser -h /enonic-xp/ -H -u 1337 -D -s /bin/sh enonic-xp
RUN chown -R enonic-xp /enonic-xp/
VOLUME /enonic-xp/home
ADD logo.txt /logo.txt
CMD cat /logo.txt
Run Code Online (Sandbox Code Playgroud)

ls

$ docker volume ls
DRIVER              VOLUME NAME
local               b4e99290fd4d5f7a3fe700ae9b616c2e66b1f758c497662415cdb47905427719
Run Code Online (Sandbox Code Playgroud)

我希望能够进入该卷。

inspect
docker volume inspect b4e99290fd4d5f7a3fe700ae9b616c2e66b1f758c497662415cdb47905427719
[
    {
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/b4e99290fd4d5f7a3fe700ae9b616c2e66b1f758c497662415cdb47905427719/_data",
        "Name": "b4e99290fd4d5f7a3fe700ae9b616c2e66b1f758c497662415cdb47905427719",
        "Options": {},
        "Scope": "local"
    }
]
Run Code Online (Sandbox Code Playgroud)

docker

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

将env变量传递给DOCKER Spring Boot

我有一个SpringBoot应用程序,它的Dockerfile如下.我有针对不同环境的application.properties,例如local/dev/qa/prod.当我在IDE中本地运行应用程序时,我在VM选项中传递-Dspring.profiles.active = local,以便它加载application-local.properties.为了作为docker容器运行,我构建了一个包含所有application.properties的映像.即它只是所有环境的SAME泊坞窗图像.

当我在一个环境中运行图像时,我想以某种方式让SpringBoot理解它的dev env,所以它必须加载application-dev.properties.我使用AWS ECS来管理容器.

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/sample-test-sb-sample-app-1.0-exec.jar app.jar
EXPOSE 8080
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
Run Code Online (Sandbox Code Playgroud)

spring environment-variables docker spring-boot dockerfile

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

初学者关于OOP和持久性的概念性问题

这是关于OOP的一个非常基本的问题(我使用python但实际上它是一个概念性问题,所以不是特定于语言).我环顾四周,但没有教程或书籍涵盖这个具体问题.如果我不清楚,我道歉,并乐意澄清我写的任何内容.

假设我正在创建一个简单的地址簿,我想用pickle写入磁盘.我有一个类Contact,其中包含__init__一些args(firstName和lastName),我有一个菜单,您可以在其中创建联系人,编辑它们等.对于OOP的所有示例,我看到他们会做类似的事情......

bob = Contact('Bob', 'Smith') 
jane = Contact('Jane', 'Smith')
Run Code Online (Sandbox Code Playgroud)

...创建新的联系实例.但这些都是在运行时之前定义的.当我想通过用户输入动态创建所有这些实例时会发生什么?我是否为每个人创建新实例?我如何从用户输入中执行此操作?然后只需将所有实例写入列表并腌制它?或者你做的事......

firstName, lastName = raw_input("Enter first name: "), raw_input("Enter last name: ")    
contact = Contact(firstName, lastName)
Run Code Online (Sandbox Code Playgroud)

...然后只需将联系人附加到列表中,并在每次要添加用户时获取联系人实例的新值?这是一个我没有真正得到的关键概念(因为我没有看到它在任何地方解释过).我见过的所有示例都不会执行上述操作,而是为每个事物/人创建新实例,但所有实例都是预先定义的,而不是动态创建的.我真的很感激有人向我解释这个概念.

oop persistence

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

将元素(面板)放在wx.GridBagSizer中

我正在使用栅格化器将两块面板放在一个框架内.

control_panel = wx.Panel(self, id=ID_CONTROL_PANEL)
main_panel = wx.Panel(self, id=ID_MAIN_PANEL)

frame_sizer = wx.GridBagSizer(1, 1)
frame_sizer.Add(control_panel, (0, 0), (2, 5), flag=wx.EXPAND)
frame_sizer.Add(main_panel, (2, 0), (5, 5), flag=wx.EXPAND)
frame_sizer.AddGrowableRow(0)
frame_sizer.AddGrowableCol(0)
self.SetSizer(frame_sizer)
Run Code Online (Sandbox Code Playgroud)

我希望control_panel位于main_panel之上(如上所示).然而,这是我得到的输出:

替代文字

当我指出相反的情况时,我不知道为什么顶部面板比底部面板大得多.(2,5)为顶部,(5,5)为底部.它也有一个奇怪的行为,当我调整它更小,它基本上给了我想要的东西(见下图),但我不知道如何保持比率,当我再次变大.

替代文字

然而,当您开始调整大小(即使是少量)时,您可以看到(下方)形状和比率在另一个方向上发生显着变化(底部变得更小,顶部变得更大).

替代文字

仍然试图学习这个sizer,并且无法用我见过的任何例子找到这个问题.还尝试了所有参数并做了一些测试,我无法弄清楚这里发生了什么.任何帮助将非常感激.

编辑:下面的图片添加,以帮助评论如下. 替代文字

python user-interface wxpython sizer

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

JSON 转换中丢失的 xml 数据

我使用多个转换库将 xml 转换为 JSON,得到以下结果。如您所见,属性名称属性丢失了,项目名称属性也丢失了。为什么?

有没有人建议我如何更改我的 XML 以使其更易于转换?

<Asset name="xyz">
  <Property name="p1">Value 1</Property> 
  <Property name="p2">Value 2</Property> 
  <TimeSeries name="TimeSeries Name 1">
    <Item name="30 Apr 2009">97.47219</Item> 
    <Item name="01 May 2009">97.16496</Item> 
    <Item name="05 May 2009">97.34606</Item> 
  </TimeSeries>
</Asset>
Run Code Online (Sandbox Code Playgroud)

返回:

{
  "Asset": {
    "@attributes": {
      "name": "xyz"
    },
    "Property": ["Value 1", "Value 2"],
    "TimeSeries": {
      "@attributes": {
        "name": "TimeSeries Name 1"
      },
      "Item": ["97.47219", "97.16496", "97.34606"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但 XML 和 JSON 都更加冗长:

<Asset name="xyz">
  <Property><name>p1</name><value>Value 1</value></Property> 
  <Property><name>p2</name><value>Value 2</value></Property> 
  <TimeSeries name="TimeSeries Name 1">
      <Item><date>30 Apr …
Run Code Online (Sandbox Code Playgroud)

javascript xml asp.net json

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

SQLAlchemy可以添加新记录并自动化表之间的关系而无需手动检查PK唯一性吗?

我是SQLAlchemy的新手,并阅读了基本文档.我目前正在关注Mike Driscoll的MediaLocker教程并根据自己的目的修改/扩展它.

我有三张桌子(贷款,人,卡).贷款卡和贷款人都是一对多的关系,并建模如下:

from sqlalchemy import Table, Column, DateTime, Integer, ForeignKey, Unicode
from sqlalchemy.orm import backref, relation
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine("sqlite:///cardsys.db", echo=True)
DeclarativeBase = declarative_base(engine)
metadata = DeclarativeBase.metadata

class Loan(DeclarativeBase):
    """
    Loan model
    """

    __tablename__ = "loans"

    id = Column(Integer, primary_key=True)
    card_id = Column(Unicode, ForeignKey("cards.id"))
    person_id = Column(Unicode, ForeignKey("people.id"))
    date_issued = Column(DateTime)
    date_due = Column(DateTime)
    date_returned = Column(DateTime)
    issue_reason = Column(Unicode(50))
    person = relation("Person", backref="loans", cascade_backrefs=False)
    card = relation("Card", backref="loans", cascade_backrefs=False) …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy primary-key relational-database

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

龙卷风嵌套的Web服务调用(异步?)

我正在使用tornado(以及第三方tornadows模块)实现SOAP Web服务.我服务中的一个操作需要调用另一个操作,所以我有链:

  1. (通过SOAPUI)对操作A的外部请求
  2. 内部请求(通过请求模块)进入操作B.
  3. 操作B的内部响应
  4. 操作A的外部响应

因为它全部在一个服务中运行,所以它在某处被阻止.我不熟悉龙卷风的异步功能.

只有一个请求处理方法(post),因为所有内容都在单个url上,然后根据SOAPAction请求头值调用特定操作(处理方法).我用@ tornado.web.asynchronous修饰了我的post方法,最后调用了self.finish()但没有骰子.

龙卷风可以处理这种情况,如果可以,我该如何实现它?

编辑(添加代码):

class SoapHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def post(self):
        """ Method post() to process of requests and responses SOAP messages """
        try:
            self._request = self._parseSoap(self.request.body)
            soapaction = self.request.headers['SOAPAction'].replace('"','')
            self.set_header('Content-Type','text/xml')
            for operations in dir(self):
                operation = getattr(self,operations)
                method = ''
                if callable(operation) and hasattr(operation,'_is_operation'):
                    num_methods = self._countOperations()
                    if hasattr(operation,'_operation') and soapaction.endswith(getattr(operation,'_operation')) and num_methods > 1:
                        method = getattr(operation,'_operation')
                        self._response = self._executeOperation(operation,method=method)
                        break
                    elif num_methods == 1:
                        self._response = self._executeOperation(operation,method='')
                        break
            soapmsg = self._response.getSoap().toprettyxml()
            self.write(soapmsg) …
Run Code Online (Sandbox Code Playgroud)

python asynchronous web-services tornado

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