pywintypes.com_error: (-2147221008, 'ยังไม่ได้เรียก CoInitialize', ไม่มี, ไม่มี)

เมื่อฉันพยายามเรียกใช้โค้ดนี้ตามที่ฉันได้รับข้อผิดพลาด "IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch) pywintypes.com_error: (-2147221008, 'CoInitialize has not been called.', None, None )" อย่างไรก็ตาม ถ้าฉันเรียกใช้ stp_tracker เพียงอย่างเดียว มันก็ใช้งานได้ดี และหากฉันเรียกใช้ notify stp เพียงอย่างเดียว มันก็ใช้งานได้ดี ฉันขอขอบคุณข้อมูลของทุกคน ขอบคุณ

import time
import win32com.client
# import sys
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
# import watchdog


class MyHandler(PatternMatchingEventHandler):
    patterns = ["*.stp", "*.step", "*.txt"]

    def process(self, event):
        """
        event.event_type
            'modified' | 'created' | 'moved' | 'deleted'
        event.is_directory
            True | False
        event.src_path
            path/to/observed/file
        """
        # the file will be processed there
        print(event.src_path, event.event_type)

    def on_modified(self, event):
        self.process(event)
        notify_stps()

    def on_created(self, event):
        self.process(event)
        notify_stps()

    def on_deleted(self, event):
        self.process(event)
        notify_stps()


def stp_tracker():
    # /if __name__ == '__main__':
    path = r"W:\TestFolder"
    observer = Observer()
    observer.schedule(MyHandler(), path)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()

    observer.join()


def notify_stps():
    const = win32com.client.constants
    olMailItem = 0x0
    obj = win32com.client.Dispatch("Outlook.Application")
    newMail = obj.CreateItem(olMailItem)
    newMail.Subject = "I AM SUBJECT!!"
    newMail.Body = "Step files in directory"
    # newMail.BodyFormat = 2 # olFormatHTML https://msdn.microsoft.com/en-us/library/office/aa219371(v=office.11).aspx
    # newMail.HTMLBody = "<HTML><BODY>Enter the <span style='color:red'>message</span> text here.</BODY></HTML>"
    newMail.To = '[email protected]'
    # attachment1 = r"C:\Temp\example.pdf"
    # newMail.Attachments.Add(Source=attachment1)

    newMail.Send()


stp_tracker()

person Robotics101    schedule 07.04.2020    source แหล่งที่มา
comment
ขออภัยสำหรับสิ่งนั้น แต่เมื่อค้นหาในอินเทอร์เน็ตแล้วพบว่ามีบางอย่างที่ช่วยได้ ฉันเจอโพสต์เดียวกันก่อนหน้านี้และคิดว่ามันเป็นข้อมูลที่เลิกใช้แล้วเพราะการทำให้สมบูรณ์อัตโนมัติของฉันใน pycharm ไม่ได้รับอะไรเลยเมื่อพิมพ์ pythoncom.CoInitialize() ดังนั้นจึงทำให้คิดว่ามันเป็นข้อมูลที่ล้าสมัย   -  person Robotics101    schedule 07.04.2020
comment
เพิ่ม pythoncom.CoInitialize() โปรดดู: ยังไม่ได้เรียก CoInitialize   -  person Strive Sun    schedule 08.04.2020


คำตอบ (1)


ขออภัยสำหรับสิ่งนั้น แต่เมื่อค้นหาในอินเทอร์เน็ตแล้วพบว่ามีบางอย่างที่ช่วยได้ ฉันเจอโพสต์เดียวกันก่อนหน้านี้และคิดว่ามันเป็นข้อมูลที่เลิกใช้แล้วเพราะการทำให้สมบูรณ์อัตโนมัติใน pycharm ของฉันไม่ได้หยิบอะไรขึ้นมาเมื่อพิมพ์ pythoncom.CoInitialize() ดังนั้นจึงทำให้ฉันคิดว่ามันเป็นข้อมูลที่ล้าสมัย ข้อมูลเดียวกันนี้ Strive Sun อธิบายด้วย

person Robotics101    schedule 10.04.2020