Как проверить, что файл полностью загружен в папку, используя python - PullRequest
0 голосов
/ 15 марта 2020

Я работаю над сценарием python, который отвечает за организацию вашей папки загрузки, размещая каждый тип файла в отдельной папке. Я использую сторожевой таймер для проверки изменений в папке загрузки. Если что-то начинает загружаться, сценарий запускается, хотя я хочу подождать, пока загрузка завершится, прежде чем запустить свой сценарий.

Я не могу понять, как проверить, загружается ли загрузка файла полностью, используя python.

Я включил код, чтобы показать, как в основном работает мой скрипт.

class ShiftingFiles(FileSystemEventHandler):
"""
This class is going to allow us to override the FileSystemEventHandler
methods.
"""
# Overriding the on_modified() method of FileSystemEventHandler class
# in the watchdog API
def on_modified(self, event):
    self.shift()



if __name__ == "__main__":
    # To shift the files as soon as the program is run
    ShiftingFiles().shift()
    # Consuming watchdog API
    event_handler = ShiftingFiles()
    observer = Observer()
    observer.schedule(event_handler, download_location, recursive=False)
    observer.start()
    try:
        while True:
            time.sleep(1000)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

У меня была похожая проблема, и это сработало для меня. Дождитесь окончания передачи файла перед его обработкой:

def on_modified(self, event):
        file_size = -1
        while file_size != os.path.getsize(event.src_path):
            file_size = os.path.getsize(event.src_path)
            time.sleep(1)

        self.shift()
0 голосов
/ 15 марта 2020

Я думаю, что это не лучшее решение, но вы можете увидеть дату последней модификации с интервалом в 1 минуту, и если она такая же, считайте, что файл завершен.

...