2016-02-16 1 views
0

Ce que je veux programme,Python - Comment copier le contenu de l'USB (Flash) dans le répertoire système

Lorsque lecteur USB est connecté au système le code doit lancer automatiquement et Copier le contenu (Répertoires, fichiers etc.) du lecteur usb au répertoire de sauvegarde par défaut de Système.

Je suis tombé sur certains sites et a constaté que je peux utiliser bibliothèque shutilhttps://docs.python.org/2/library/shutil.html opérations de fichiers de haut niveau. Je n'ai pas utilisé la bibliothèque Shutil, Donc, y at-il un autre moyen d'atteindre,

quelqu'un a déjà fait cela alors s'il vous plaît aider. Merci

+0

Il est peu probable que la copie d'une clé USB soit différente de la copie effectuée ailleurs. Comprenez-vous comment copier des fichiers, avec 'shutil' ou autre chose? L'emplacement du système de fichiers du lecteur flash varie probablement en fonction de votre système d'exploitation, mais une fois que vous connaissez cette partie, il n'y a pas grand-chose. – Blckknght

Répondre

3

J'ai résolu cela et résolu, j'espère que cela aidera les gars qui sont débutants comme moi.

premier code i pour copier des fichiers et des répertoires à l'aide shutil pour plus d'aide https://docs.python.org/2/library/shutil.html, lecteur de connexion USB pour effectuer l'opération

Étape 1: code_to_copy.py

import os 
import datetime 
import shutil 
from shutil import copytree, ignore_patterns 

files = os.listdir('/media/user/') 

destination = '/home/user/Path/Backup/back_%s'%datetime.datetime.now() 
try : 
    for f in files: 
     source = '/media/user/%s' % f 
     copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))  
except Exception as e: 
    print e 

vous pouvez exécuter ce fichier pour vérifier s'il copie ou non, puis

créer fichier bash

Étape 2: code_to_copy.sh

#!/bin/bash 
python /home/user/path/code_to_copy.py 

assurez-vous que vous disposez des autorisations à ces fichiers

étape 3: ajouter à

cron
$ crontab -e 

#add this line 
* * * * * /home/user/path/code_to_copy.sh > /tmp/code_to_copy.log 

# chèque fichier journal à /tmp/code_to_copy.log

après une minute votre appareil connecté d ata sera copié dans votre dossier de sauvegarde et hola.

2

Vous pouvez utiliser la bibliothèque de pythons qui est assez simple à manipuler copier operations.If dont vous avez besoin pour automatiser le processus d'essayer les étapes ci-dessous:

1: Si obtenir tous les fichiers dans un pendrive ou tout autre lecteur amovible obtenir tous les fichiers et écrire dans une liste par ce qui suit:

import os 
files = os.listdir('path-to-removable-media') 

2: une fois fait des thats itérer par liste et utiliser la bibliothèque shutil pour copier des fichiers.

import shutil 
for f in files: 
    shutil.copyfile('/source path/%s' % f, '/destination path/%s' %f) 

3. Maintenant, si vous avez besoin d'automatiser le processus de créer un fichier bash (fichier avec l'extension sh) avec suivant le contenu de votre dossier dans lequel script python est présent (ex: créer un fichier test.sh et copie suivante)

#!/bin/bash 
clear 
python script.py 

4: Ensuite, ajoutez dans votre cronjob si vous devez vérifier ou exécuter dans specificintervals et si un support amovible n'est pas connecté cas d'exception besoin d'être également traitées. 5: Pour obtenir la source, vous pouvez utiliser un sous-processus en python.

import subprocess 
output = subprocess.Popen("lsblk", stdout=subprocess.PIPE, shell=True) 
for out in output.communicate()[0].split(): 
    if '/media/' in out: 
     print out 

Ceci donnera le chemin du support amovible dans les périphériques Linux.

+0

Hey @vishnu Cela m'aide mais comment obtenir le chemin source du lecteur flash? – Kjjassy

+0

@KamleshJaiswal j'ai une réponse pour détecter les médias remavable – Vishnu

0

Ceci est un exemple de la façon de copier un fichier sur un périphérique USB (périphérique amovible) que vous pouvez inverser.

import os 
file = "cat.jpg" 
os.system("for /F \"tokens=1*\" %a in (\'fsutil fsinfo drives\') do (for %c in (%b) do (for /F \"tokens=3\" %d in (\'fsutil fsinfo drivetype %c\') do (if %d equ Removable (copy " + file + " %c))))")