【问题标题】:How to automatically run python script, when file is added to folder?将文件添加到文件夹时如何自动运行python脚本?
【发布时间】:2018-09-08 11:47:35
【问题描述】:

如何在将 Word 文件添加到特定文件夹时自动运行 python 脚本?这个 python 脚本之后需要使用 Word 文件。我的操作系统是 Windows。

提前感谢您的帮助。

【问题讨论】:

  • 为什么不一直运行 Python 脚本,让它定期检查新文件?
  • 我也可以这样做,但我不知道如何检查文件夹中是否有新文件。
  • @CSJ 这个代码很奇怪。 “出于常识性原因,字典用于保存每次循环的文件列表。”我在这里看不到常识,因为所有值都是None(从未使用过)。
  • 不确定None 的用途,也许可以改进它以记录文件上次更改的时间戳。并比较时间戳。只需引用 url 供您参考他提到的 3 种方式

标签: python windows directory


【解决方案1】:

如何在将 Word 文件添加到特定文件夹时自动运行 python 脚本?

可以在以下代码中找到解决方案:

import os 

# define path for file
word_file = "path/to/file"

while True: 

    if os.path.exists(word_file):
        # your code here 

此代码使用os 模块与PC 的文件系统交互,并启动一个始终运行的while 循环。条件语句的条件是指定位置存在word_file,你可以在if语句中执行你想要的代码。

我希望这会有所帮助 - 如果您有任何问题,请告诉我!

【讨论】:

  • 这段代码只检查路径是否存在
【解决方案2】:

您可能想研究创建 python 服务。

How do you run a Python script as a service in Windows?

与此处的其他答案一样,您将创建一个持久循环来定期检查文件系统中的文件,然后在找到它时/当它找到它时执行一些操作。

【讨论】:

    【解决方案3】:
    【解决方案4】:

    您可以使用看门狗,并创建自己的eventHandler,例如,覆盖filesystemeventhandler 中的原始函数,通过使用filesystemeventhandler(class MyHandler(fileSystemEventHandler):) 创建一个类,您可以更改on_any_event 或on_created_ 或on_modified。

    【讨论】:

      【解决方案5】:

      我已经尝试了所有这些解决方案,但对我来说效果不佳

      但是!

      我有办法了,

      代码如下:

      path_to_watch = "your/path"
      print('Your folder path is"',path,'"')
      before = dict ([(f, None) for f in os.listdir (path_to_watch)])
      while 1:
              after = dict ([(f, None) for f in os.listdir (path_to_watch)])
              added = [f for f in after if not f in before]
              if added:
                      print("Added: ", ", ".join (added))
                      break
              else:
                   before = after
      

      我已经编辑了代码,原始代码可以在http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html获得

      原始代码是用python 2x制作的,所以你需要在python 3中转换它。

      注意:

      每当您在路径中添加任何文件时,它都会打印文本并中断,如果没有添加任何文件,则它将继续运行

      【讨论】:

        【解决方案6】:

        如果你想无限运行这个脚本,你可以使用这个:

        import os
        
        path_to_watch = "C:/Users/someone/"
        print('Your folder path is"',path_to_watch,'"')
        
        old = os.listdir(path_to_watch)
        print(old)
        
        while True:
            new = os.listdir(path_to_watch)
            if len(new) > len(old):
                newfile = list(set(new) - set(old))
                print(newfile[0])
                old = new
                extension = os.path.splitext(path_to_watch + "/" + newfile[0])[1]
                if extension == ".zip":
                    print("hello")
                else:
                    continue            
            else:
                continue
        

        在这种情况下,我正在监视一个新的 .zip 文件。但是当你把它改成你想要的扩展名时,当有一个新的word文档时它会运行一些东西。当你把你想运行的脚本当"if extension..."下有一个新的word文档时它应该可以工作了。

        代码基于来自@Faraaz Kurawle 的脚本。

        【讨论】:

          猜你喜欢
          • 2015-08-18
          • 1970-01-01
          • 1970-01-01
          • 2011-12-04
          • 2021-10-15
          • 2016-07-25
          • 2011-07-03
          • 1970-01-01
          相关资源
          最近更新 更多