Stack Overflow на русском Asked by Crazy Theory on November 9, 2020
подскажите, пожалуйста, каким образом я мог бы отследить появляющийся файл в директории, используя операционную систему Windows?
Понятно, что нужно объявить цикл, но неясно, каким образом получить новый файл.
К примеру у меня в директории рядом с файлом .py лежит папка, в которой будут появляться новые файлы, в этой папке уже есть файл d.txt, когда я запущу питоновский скрипт я ожидаю, что в момент, когда я засуну туда еще один файл, например c.txt он его обнаружит, а там в этой зависимости я планирую произвести нужные мне операции.
Попробуйте модуль watchdog.
Пример:
import logging
import time
from pathlib import Path
# pip install watchdog
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
path = Path(__file__).resolve().parent
event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
PS.
В примере для обработки изменений в папке использовался LoggingEventHandler
, а если вам нужен свой обработчик, то нужно его создать, наследую от FileSystemEventHandler
и переопределив методы:
def on_moved(self, event)
def on_created(self, event)
def on_deleted(self, event)
def on_modified(self, event)
Пример (немного переделанный LoggingEventHandler
):
from watchdog.events import FileSystemEventHandler
class CustomEventHandler(FileSystemEventHandler):
def on_moved(self, event):
super().on_moved(event)
what = 'directory' if event.is_directory else 'file'
print(f"Moved {what}: from {event.src_path} to {event.dest_path}")
def on_created(self, event):
super().on_created(event)
what = 'directory' if event.is_directory else 'file'
print(f"Created {what}: {event.src_path}")
def on_deleted(self, event):
super().on_deleted(event)
what = 'directory' if event.is_directory else 'file'
print(f"Deleted {what}: {event.src_path}")
def on_modified(self, event):
super().on_modified(event)
what = 'directory' if event.is_directory else 'file'
print(f"Modified {what}: {event.src_path}")
Кст, возможно будет более функционально наследоваться от RegexMatchingEventHandler
или PatternMatchingEventHandler
-- это дает возможность настройки фильтрации "из коробки".
Correct answer by gil9red on November 9, 2020
2 Asked on December 26, 2021 by shadow-blade
2 Asked on December 26, 2021
dataframe pandas python %d0%b0%d0%bd%d0%b0%d0%bb%d0%b8%d0%b7 %d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85 %d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f
0 Asked on December 26, 2021
2 Asked on December 26, 2021 by svart713
1 Asked on December 26, 2021 by artur-skachkov
1 Asked on December 26, 2021
c %d0%b0%d1%81%d1%81%d0%b5%d0%bc%d0%b1%d0%bb%d0%b5%d1%80 %d0%b4%d0%b8%d0%bd%d0%b0%d0%bc%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d0%b5 %d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2%d1%8b
1 Asked on December 26, 2021 by oleg_ba
1 Asked on December 26, 2021 by 1misha23
python python 3 x %d1%81%d0%bb%d0%be%d0%b2%d0%b0%d1%80%d1%8c %d1%81%d0%be%d1%80%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d0%b0
1 Asked on December 26, 2021
1 Asked on December 26, 2021 by daylight
1 Asked on December 26, 2021 by cilitbang
java %d1%80%d0%b5%d0%b3%d1%83%d0%bb%d1%8f%d1%80%d0%bd%d1%8b%d0%b5 %d0%b2%d1%8b%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f
3 Asked on December 26, 2021
2 Asked on December 25, 2021
python %d1%81%d1%82%d1%80%d0%be%d0%ba%d0%b8 %d1%84%d0%b0%d0%b9%d0%bb%d1%8b
0 Asked on December 25, 2021 by owl
Get help from others!
Recent Questions
Recent Answers
© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir