我试图创建一个简单的文件重命名器使用看门狗在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()
1条答案
按热度按时间vsmadaxz1#
对我来说,
time.sleep(0)
似乎是问题之一。观察者类是基于事件的,所以它不会根据无限循环中的睡眠参数来监视文件夹,但它会在事件从操作系统到达时立即运行处理程序方法。这个无限循环使用了整个CPU内核(正如空的无限循环通常所做的那样),因此您应该将
time.sleep()
参数更改为1
(或任何比1
更大的参数,因为KeyboardInterrupt
将中断休眠方法,而不管其“长度”如何)。你也应该使用
PatternMatchingEventHandler()
,它的功能和你的几乎一样,但是它只检查新创建的文件(不是每个文件,对于每个处理程序方法调用),你甚至不需要写任何新的类。