hallo zusammen,
hab mal wieder ne frage: wie kann ich herausbekommen welche outlook-version
installiert ist bzw. ob überhaupt outlook installiert ist.
gruss
ben
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Dusch reibst:
> win32com.client.dynamic.Dispatch("Outlook.Application") macht probleme.
> wenn ich die py-datei mit IDLE =F6ffne und dann ablaufen lass krieg ich f=
> ehler
> meldungen.
1) Schmeiss Idle weg und nimm Pythonwin. Ist meine vollig vorurteilslose
Meinung.
2) Folgende Fehlermeldung:
>pythonw -u ausguck03.py
Traceback (most recent call last):
File "ausguck03.py", line 25, in ?
DumpDefaultAddressBook()
File "ausguck03.py", line 12, in DumpDefaultAddressBook
folder =
mapi.GetDefaultFolder(win32com.client.constants.olFolderContacts)
File "C:\Python23\lib\site-packages\win32com\client\__init__.py", line
168, in __getattr__
raise AttributeError, a
AttributeError: olFolderContacts
>Exit code: 1
liegt daran, da? du zuerst mittels makepy die Typelib-Infos (das ist eine
quasi maschinenlesbare Beschreibung, was fur Zeug Ausguck exportiert).
-> Pythonwin starten
-> COM makepy utility im Tools menu
-> Microsoft Outlook 9.0 Object Library (oder halt deine Version)
Es steht was da der Form
Generating to
C:\Python23\lib\site-packages\win32com\gen_py\00062FFF-0000-0000-C000-000000
000046x0x9x0.py
Wenn du die Datei im Editor offnest, siehst du, was Ausguck so "offiziell"
anbietet. z.B. findest du
class Application(CoClassBaseClass): # A CoClass
CLSID = IID('{0006F03A-0000-0000-C000-000000000046}')
coclass_sources = [
ApplicationEvents,
]
default_source = ApplicationEvents
coclass_interfaces = [
_Application,
]
default_interface = _Application
Das bedeutet, da? die Klasse Application das Interface _Application
exportiert. Guckst du weiter, findest du die
class _Application:
...
def ActiveWindow(self):
ret = self._oleobj_.InvokeTypes(287, LCID, 1, (9, 0), (),)
if ret is not None:
ret = Dispatch(ret, 'ActiveWindow', None, UnicodeToString=0)
return ret
...
_prop_map_get_ = {
...
"Name": (12289, 2, (8, 0), (), "Name", None),
"Parent": (61441, 2, (9, 0), (), "Parent", None),
"ProductCode": (284, 2, (8, 0), (), "ProductCode", None),
# Method 'Session' returns object of type '_NameSpace'
"Session": (61451, 2, (9, 0), (), "Session",
'{00063002-0000-0000-C000-000000000046}'),
"Version": (278, 2, (8, 0), (), "Version", None),
}
Daraus kannst du z.B. lesen, da? es eine Methode
Application.ActiveWindow()
gibt und da? es ein Property
Application.Name gibt.
Versuche folgendes:
import codecs, win32com.client
o = win32com.client.Dispatch("Outlook.Application")
print o.Name
print o.ActiveWindow()
Hat also geklappt. Mein Orginalbeispiel sollte nach makepy auch
funktionieren.
Du schreibst ferner:
> Hab herausgefunden das es die Funktion "Add" gibt. Jetzt hab ich echt
keinen
> plan wie ich die aufrufen soll?
> weiss nicht sorecht was ich davorschreiben muss.
> kann ja nicht einfach
> Add("NewContacts")
> schreiben um nen neuen Order zu erstellen.
> Kannst du mir vielleicht das mit der "Add" Funktion dazucoden, dass ich
mal
> seh wie man aus Python die Funktionen aufruft???
> Ware dir echt dankbar
Guck dir im oben genannten makepy-generierten Source mal an, was unter
class _ContactItem
steht. Da findest du z.B. eine *riesige* unwahrscheinlich kranke liste an
Properties, die in Kontaktitems enthalten sind. Anlegen geht so:
# ausguck auf
o = win32com.client.Dispatch("Outlook.Application")
mapi = o.GetNamespace("MAPI")
folder = mapi.GetDefaultFolder(win32com.client.constants.olFolderContacts)
# neuer eintrag
item = folder.Items.Add()
item.FullName = EncodeUnicodeString("Heinz Erhardt")
item.Email1Address = EncodeUnicodeString("heinz.erhardt(a)nix.invalid")
# usw fur alle Properties, die du vergeben willst
# Am schluss nicht vergessen:
item.Save()
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Ohne weitere Worte:
------------------ (ABSCHNEIDEN HIER) ------------
import time, sys, locale
print "Python ist %s" % str(sys.version)
default = locale.getdefaultlocale()
print "default locale ist %s" % str(default)
# laut doku zu strftime ist, Zitat
# "%c Locale's appropriate date and time representation "
print 'Das ist aber keine Deutsche Datumsangabe: %s' % time.strftime("%c")
# das ist auch toll:
try:
locale.setlocale(locale.LC_ALL, default[0])
except Exception, e:
print "setlocale('%s') schlägt fehl: %s" % (default[0], e)
# undokumentiert, geht aber offensichtlich
locale.setlocale(locale.LC_ALL, "german")
# dokumentiert, geht aber nicht:
try:
print locale.D_T_FMT
except AttributeError, e:
print "locale.D_T_FMT gibt es nicht: %s" % str(e)
# abgesehen davon, daß weder asctime noch localtime die locale
# berücksichtigen (aber gut, das ist zumindest dokumentiert)
print "Endlisch: %s" % time.strftime("%c")
------------------ (ABSCHNEIDEN HIER) ------------
Das Ergebnis
>pythonw -u localesaugt.py
sys:1: DeprecationWarning: Non-ASCII character '\xe4' in file localesaugt.py
on line 17, but no encoding declared; see
http://www.python.org/peps/pep-0263.html for details
Python ist 2.3 (#46, Jul 29 2003, 18:54:32) [MSC v.1200 32 bit (Intel)]
default locale ist ('de_DE', 'cp1252')
Das ist aber keine Deutsche Datumsangabe: 08/01/03 09:37:17
setlocale('de_DE') schlägt fehl: locale setting not supported
locale.D_T_FMT gibt es nicht: 'module' object has no attribute 'D_T_FMT'
Endlisch: 01.08.2003 09:37:17
>Exit code: 0
Wobei mir die DeprecationWarning da GERADE noch gefehlt hat. Grmpf......
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
Moin,
ich versuche mich gerade mal wieder an Python und
bleibe derzeitig an zwei kleinen Problemen hängen:
Ich lese eine Datei ein per:
rows = f.readlines()
Dabei landen die einzelnen Zeilen alle im array rows.
Allerdings hat jede Zeile einen NewLine Character am
Ende, den ich gerne loswerden möchte..
Des weiteren würde ich gerne wissen, wieviele Elemente
das Array enthält, da die einzulesende Datei nicht fix
ist in der Anzahl der Zeilen..
Ich kann zwar einfach mit
for r in rows:
print r,
den extra Zeilenumbruch unterdrücken und gleichzeitig
mir alle Zeilen anschauen, aber um die Elemente des
Arrays weiter zu verarbeiten ist das leider nicht
geeignet..
Könnte mir da bitte mal jemand auf die Sprünge
helfen und sagen wo ich nachgucken muss?
Danke,
Marcus
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de
hallo,
benutze outlook97 und python 2.2.3
hab folgenden code:
import codecs, win32com.client
# needed for converting Unicode->Ansi (in local system codepage)
DecodeUnicodeString = lambda x: codecs.latin_1_encode(x)[0]
def DumpDefaultAddressBook():
# Create instance of Outlook
o = win32com.client.dynamic.Dispatch("Outlook.Application")
mapi = o.GetNamespace("MAPI")
folder =
mapi.GetDefaultFolder(win32com.client.constants.olFolderContacts)
print "Das Outlook-Adressbuch enthaelt",folder.Items.Count,"Elemente\n"
# see Outlook object model for more available properties on ContactItem
objects
attributes = [ 'FullName', 'Email1Address', 'BusinessAddressStreet',
'BusinessAddressCity']
for i in range(1,folder.Items.Count+1):
print "----------Eintrag %d----------" % i
item = folder.Items[i]
for attribute in attributes:
print attribute,": ", eval('item.%s' % attribute)
o = None
DumpDefaultAddressBook()
hab folgendes merkwürdige problem damit:
win32com.client.dynamic.Dispatch("Outlook.Application") macht probleme.
wenn ich die py-datei mit IDLE öffne und dann ablaufen lass krieg ich fehler
meldungen. lösch ich aus obiger funktion das "dynamic" raus und lass es dann
ablaufen krieg ich wiederum fehlermeldungen.
Wenn ich jetzt wieder das "dynamic" einfüge(dh. Quelltext ist wie am
Anfang), kann ich das programm ohne fehlermeldungen ablaufen lassen .ist
doch seltsam, oder????
Was genau macht das COM makepy utility??? Wenn ich es unter Pythonwin starte
finde ich die "Microsoft Outlook 8.0 Object Library", kann sie auswählen und
auf ok drücken. dann wird ein verzeichniss erstellt mit irgendwelchen
py-dateien. muss ich mit diesem verzeichniss irgendwas machen???
_______________________________________________
Python-de maillist - Python-de(a)python.net
http://python.net/mailman/listinfo/python-de