2015-11-23 2 views
2

J'ai écrit un script python qui envoie souvent des mails via Outlook. Le problème est que si Outlook n'est pas ouvert, aucun courrier ne sera envoyé. (J'utilise Outlook 2013) Maintenant, je veux vérifier au début de mon script si Outlook est déjà ouvert, et sinon je veux l'ouvrir avec python pour éviter les erreurs.Vérifiez avec Python si Outlook est déjà ouvert, sinon l'ouvrir

Comment vérifier si Outlook est déjà en cours d'exécution via Python 2.7? Pour démarrer Outlook je voudrais utiliser le code simple:

import os 
os.startfile("outlook") 

Merci pour votre aide!

+0

Vous pouvez utiliser un bloc try et except. –

+0

Est-il possible pour vous d'envoyer des courriels * sans * utiliser Outlook? Par exemple, vous devriez utiliser le module intégré [smtplib] (https://docs.python.org/2/library/smtplib.html) pour envoyer des courriels en utilisant ** S ** imple ** M * * tous ** T ** transfert ** P ** rotocol; cela simplifiera les choses * en * le découplant des clients :) – ray

Répondre

1

Depuis l'OP demande au sujet de la vérification pour Outlook , je suppose que c'est pour Windows et pas unix. Le problème a déjà été abordé dans another question où vous pouvez trouver plus de détails.

J'ai essayé l'extrait suivant qui fonctionne bien sur python 3.4. J'ai seulement dû installer le paquet win32 via pip install pypiwin32.

def outlook_is_running(): 
    import win32ui 
    try: 
     win32ui.FindWindow(None, "Microsoft Outlook") 
     return True 
    except win32ui.error: 
     return False 

if not outlook_is_running(): 
    import os 
    os.startfile("outlook") 
1

Vérifiez pour voir quel processus a commencé par Outlook, puis utiliser ce code pour vérifier si ce processus est en cours d'exécution:

def isprocessrunning(process): 
    import re 
    import subprocess 

    running = False 
    processlist = subprocess.Popen(["ps", "ax"],stdout=subprocess.PIPE) 
    for a in processlist.stdout: 
     if re.search(process, a): 
      running = True 

    return running 

#For Example, 
isprocessrunning("chrome".encode('utf-8')) 
#Returns True if Chrome is running 

Référence: Check if a process is running in Python (in Linux/Unix)