Ошибка автоматического копирования файлов с USB-накопителя при подключении

Я пытаюсь скопировать все файлы USB-накопителя автоматически при подключении к компьютеру. Я сделал два сценария Python для этой цели.

Следующий скрипт dete_usb.py определяет, когда подключен USB-накопитель, и вызывает copy_usb.sh.

import functools
import os.path
import pyudev
import subprocess


def main():
    BASE_PATH = os.path.abspath(os.path.dirname(__file__))
    path = functools.partial(os.path.join, BASE_PATH)
    call = lambda x, *args: subprocess.call([path(x)] + list(args))

    context = pyudev.Context()
    monitor = pyudev.Monitor.from_netlink(context)
    monitor.filter_by(subsystem='usb')  # Remove this line to listen for all devices.
    monitor.start()

    for device in iter(monitor.poll, None):
        # I can add more logic here, to run only certain kinds of devices are plugged.
        call('/home/latishpavan/copy_usb.sh')


if __name__ == '__main__':
    main()

Вот copy_usb.sh

#!/bin/sh

python /home/latishpavan/copy_usb.py 

Это copy_usb.py

import shutil
import os
import datetime as dt
from shutil import copytree, ignore_patterns
from glob import glob
from subprocess import check_output, CalledProcessError
import time
import sys


time.sleep(5)

print("starting copying....")

usb_path = '/run/media/latishpavan/UBUNTU 17_1'
files = os.listdir(usb_path)

destination = "/home/latishpavan/backup_%s" % dt.datetime.now()

try:
    for f in files:
        source = os.path.join(usb_path, f)
        print(source)
        if not '.disk' in source:
            copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))

except Exception as e:
    print(e)

Когда я запускаю copy_usb.py в терминале, все работает нормально, но когда он запускается с detect_usb.py, я получаю FileNotFoundError сразу после установки USB-накопителя. Я также попытался поставить time.sleep(), но появляется та же ошибка. Можете ли вы помочь мне выяснить, где я иду не так? Я работаю над CentOS 7.

0 ответов

Другие вопросы по тегам