-4

ウォッチドッグを使用してファイルがフォルダーに追加されたかどうかを確認するための python スクリプトを作成しています。そのファイルはキューに追加されます。

私の考えは、ファイル名をtxtに追加し、txtを監視する新しいクラスを実行してから、cmdで行を実行して、たとえばFMEを開始することです。

開きたい新しいプログラムごとに新しい .py を作成するのが最善の方法ですか。たとえば、1 つは FME 用で、もう 1 つはメモ帳用です。

私はまだ wachdog クラスをバックグラウンドに入れたいと思っています。

  • looking_for_files_and_adding_to_queue py
  • looking_in_queue_for_the_next_in_line_and_direct_to_3_party py
  • FMEパイ
  • メモ帳 py

等々...

または all.py で

class looking_for_files_and_adding_to_queue
class looking_in_queue_for_the_next_in_line_and_direct_to_3_party
class FME
class Notepad

今日、私のスクリプトは次のようになります。

import time
import sys
import os
import datetime
from watchdog.observers import Observer  
from watchdog.events import PatternMatchingEventHandler

class MyHandler(PatternMatchingEventHandler):
    patterns = ["*.tif"]
    count_move = 0

    def process(self, event):
        if self.count_move == 1:
            # the file will be processed there
            folder = "P:\\03_auto\\Indata"
            indata = event.src_path

            #Makes a new folder in Utdata based on filename
            newfolder = os.path.join(folder[:11], str("Utdata\\orto"), event.src_path[18:29])
            if not os.path.exists(newfolder):
               os.makedirs(newfolder)

            #Logg and print start of FME
            print(time.strftime('%a %H:%M:%S') + ": FME " + event.src_path[18:] + " startats i FME.")
            log_file = open("P:\\03_auto\\log.txt", "a")
            log_file.write(time.strftime('%a %H:%M:%S') + ": FME " + event.src_path[18:] + " startats i FME.\n")
            log_file.close()

            #Starting and excequting FME
            var_fme = str('fme.exe "P:\\03_auto\\Script\\tiff_to_milti_jpg_tiff\\tif_to_multi-jpg-tiff.fmw" --SourceDataset_TIFF "') + indata + str('" --FEATURE_TYPES "" --DestDataset_JPEG "') + newfolder + str('" --DestDataset_JPEG_5 "') + newfolder + str('" --DestDataset_JPEG_4 "') + newfolder + str('" --DestDataset_GEOTIFF "') + newfolder + str('" --DestDataset_GEOTIFF_3 "') + newfolder + str('"')
            os.system(var_fme)

            #Logg and pring move file
            print(time.strftime('%a %H:%M:%S') + ": Flytt " + event.src_path[18:] + " har flyttats till" + newfolder + "\nTransformering klar\n")
            log_file = open("P:\\03_auto\\log.txt", "a")
            log_file.write(time.strftime('%a %H:%M:%S') + ": Flytt " + event.src_path[18:] + " har flyttats till" + newfolder + "\nTransformering klar\n\n")
            log_file.close()

            #Move org file to Utdata\orto
            file_move = newfolder + indata[17:]
            os.rename(indata, file_move)

            #Restets script
            self.count_move = 0
        else:
            #Logg and pring loadning file while transfering
            print(time.strftime('%a %H:%M:%S') + ": Laddar " + event.src_path[18:] + " startar inladdning.")
            log_file = open("P:\\03_auto\\log.txt", "a")
            log_file.write(time.strftime('%a %H:%M:%S') + ": Laddar " + event.src_path[18:] + " startar inladdning.\n")
            log_file.close()

            #Sets counter to 1 wich enables the FME part
            self.count_move += 1


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

if __name__ == '__main__':
    path = "P:\\03_auto\\Indata"
    observer = Observer()
    observer.schedule(MyHandler(), path, recursive=True)
    observer.start()

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

    observer.join()
enter code here
4

2 に答える 2