Форум сайта python.su
0
Дано: текстовые файлы создаются в какой-либо папке, надо их парсить, обрабатывать и сохранять в другой файл. После выполнения исходные файлы можно удалить.
Нужно: понять как написать программу, которая будет делать это постоянно, т.е. чтобы при появлении нового файла в папке, происходил его парсинг.
Заранее спасибо.
Офлайн
6
Можно сделать так: в бесконечном цикле через определённые промежутки времени проверять содержимое папки на наличие файлов, и, если файлы есть, выполнять над ними нужные операции и удалять.
Примерно так:
import os import time folder_path = 'c:\\some_folder' # путь к папке с файлами while True: for filename in (f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path,f))): file_path = os.path.join(folder_path, filename) process_file(file_path) # фунция по обработке и удалении файла time.sleep(10) # ждём 10 секунд и всё по новой
Отредактировано giveback (Май 8, 2015 14:16:56)
Офлайн
253
Офлайн
0
givebackя тоже об этом подумал с самого начала. Интересно сколько ресурсов компьютера это будет требовать.
Можно сделать так: в бесконечном цикле через определённые промежутки времени проверять содержимое папки на наличие файлов, и, если файлы есть, выполнять над ними нужные операции и удалять.Примерно так:
doza_andСтранно, что на форуме пайтона дали ссылку на C++, но я так понимаю не просто так: видимо так сделать рациональней. Придется C++ еще изучать…
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx
Отредактировано yes1n (Май 9, 2015 13:22:26)
Офлайн
24
Офлайн
0
aybЕсли не сложно, подскажи как пользоваться этой библиотекой. Как установить я знаю, а где прочитать какие команды что выполняют?
https://github.com/gorakhargosh/watchdog
Офлайн
24
На гитхабе есть ссылка на документацию - https://pythonhosted.org/watchdog/
Отредактировано ayb (Май 10, 2015 09:26:02)
Офлайн
0
aybСпасибо, попробовал, хорошая либа.
На гитхабе есть ссылка на документацию - https://pythonhosted.org/watchdog/
import time from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class Handler(FileSystemEventHandler): def on_created(self, event): print (event) def on_deleted(self, event): print (event) def on_moved(self, event): print (event) observer = Observer() observer.schedule(Handler(), path='d:\\test', recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() def main(): pass if __name__ == '__main__': main()
Офлайн
6
в методе on_created. судя по названию именно он вызывается тогда, когда создаётся новый файл в директории.
а в event.src_path можно взять путь к созданному файлу
Отредактировано giveback (Май 11, 2015 16:08:27)
Офлайн