Найти - Пользователи
Полная версия: Написание программы, которая будет работать постоянно
Начало » Python для новичков » Написание программы, которая будет работать постоянно
1
yes1n
Дано: текстовые файлы создаются в какой-либо папке, надо их парсить, обрабатывать и сохранять в другой файл. После выполнения исходные файлы можно удалить.
Нужно: понять как написать программу, которая будет делать это постоянно, т.е. чтобы при появлении нового файла в папке, происходил его парсинг.
Заранее спасибо.
giveback
Можно сделать так: в бесконечном цикле через определённые промежутки времени проверять содержимое папки на наличие файлов, и, если файлы есть, выполнять над ними нужные операции и удалять.

Примерно так:

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 секунд и всё по новой
yes1n
giveback
Можно сделать так: в бесконечном цикле через определённые промежутки времени проверять содержимое папки на наличие файлов, и, если файлы есть, выполнять над ними нужные операции и удалять.Примерно так:
я тоже об этом подумал с самого начала. Интересно сколько ресурсов компьютера это будет требовать.
doza_and
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx
Странно, что на форуме пайтона дали ссылку на C++, но я так понимаю не просто так: видимо так сделать рациональней. Придется C++ еще изучать…
ayb
https://github.com/gorakhargosh/watchdog
yes1n
ayb
https://github.com/gorakhargosh/watchdog
Если не сложно, подскажи как пользоваться этой библиотекой. Как установить я знаю, а где прочитать какие команды что выполняют?
ayb
На гитхабе есть ссылка на документацию - https://pythonhosted.org/watchdog/
yes1n
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()

В итоге выводятся все изменения, происходящие в папке. Подскажите в каком месте надо писать код, чтобы работать с данными из созданных файлов.
giveback
в методе on_created. судя по названию именно он вызывается тогда, когда создаётся новый файл в директории.
а в event.src_path можно взять путь к созданному файлу
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB