我正在尝试创建一个简单的文件重命名使用watchdog在python中,它是非常简单的,任何创建的"xlsx“文件将重命名为"Base.xslx”
我使用下面的代码很快就得到了它,但是当它运行时消耗了大量的CPU和电力,是代码本身有问题还是这是正常的?
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time
import os
fp = 'C:/yourpath/'
class ExampleHandler(FileSystemEventHandler):
def on_created(self, event):
time.sleep(1)
for file_name in os.listdir(fp):
if '.xlsx' in file_name:
name=fp+file_name
os.rename(name,"Base.xlsx")
observer = Observer()
event_handler = ExampleHandler()
observer.schedule(event_handler, path=fp)
observer.start()
try:
while True:
time.sleep(0)
except KeyboardInterrupt:
observer.stop()
observer.join()发布于 2020-10-18 21:03:13
对我来说,time.sleep(0)似乎是其中一个问题。观察者类是基于事件的,所以它不会在无限循环中根据睡眠参数来监视文件夹,但一旦事件从操作系统到达,它就会运行处理程序方法。
这个无限循环使用了整个CPU核心(就像通常的空无限循环一样),所以您应该将time.sleep()参数更改为1 (或者任何大于该值的参数,这都无关紧要,因为KeyboardInterrupt将中断休眠方法,而不管它的“长度”)。
您还应该使用PatternMatchingEventHandler(),它的功能与您的几乎相同,但它只检查新创建的文件(不是每个文件,对于每个处理程序方法调用),您甚至不需要编写任何新类。
https://stackoverflow.com/questions/61978232
复制相似问题