如何使用子进程库正确处理多个 Python 脚本?

问题描述

我正在处理一个项目,其中程序使用机器人从 Telegram 聊天中获取所有文件,然后使用 Python 中的 Watchdog 库将文件移动到子文件夹中。例如,我运行脚本的主要脚本如下所示:

import file_organizer
import upload_to_s3
import subprocess

subprocess.call(['python.exe','telegram_get.py','file_trigger.py'])

我的 telegram_get.py 看起来像这样:

#import libraries and logging in

def file_handler(Update,context: CallbackContext):
    file = context.bot.getFile(Update.message.document.file_id)
    print("file_id: " + str(Update.message.document.file_id))
    file.download()

def execute_chat():
    updater = Updater(token,use_context=True)
    dispatcher = updater.dispatcher

    dispatcher.add_handler(CommandHandler("start",start))
    dispatcher.add_handler(CommandHandler("help",help_command))
    dispatcher.add_handler(MessageHandler(Filters.document,file_handler))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    execute_chat()

还有file_trigger.py

# import library

path_folder = "C:/Users/User/Desktop/python/projects/Telegram-Database/"
path_folder_jobs = "C:/Users/User/Desktop/python/projects/Telegram-Database/files/jobs"
path_folder_corona = "C:/Users/User/Desktop/python/projects/Telegram-Database/files/corona"
path_folder_etc = "C:/Users/User/Desktop/python/projects/Telegram-Database/files/etc"

def on_created(event):
    print(f"{event.src_path} has been created.")

def on_moved(event):
    print(f"Moved {event.src_path} to {event.dest_path}")

def trigger_files(path):
    my_event_handler = PatternMatchingEventHandler("*","",False,True)

    my_event_handler.on_created = on_created
    my_event_handler.on_moved = on_moved

    my_observer = Observer()
    my_observer.schedule(my_event_handler,path,recursive=True)

    my_observer.start()

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

if __name__ == '__main__':
    trigger_files(path_folder)
    trigger_files(path_folder_jobs)
    trigger_files(path_folder_corona)
    trigger_files(path_folder_etc)

这里我试图同时执行这两个脚本,所以 telegram_get.py 运行以下载聊天中的所有文件,而 file_trigger.py 查看新文件并进一步触发该功能。但显然, file_trigger.py 没有被触发。即使有一个文件,它也不会打印出消息。但是,我也没有收到任何错误。所以我不确定发生了什么。 我尝试使用不同的方法,例如 Popen 和 open,但由于没有错误,我很难理解它。任何建议将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)