2016-02-16 4 views
0

Что я хочу программы,Python - Как скопировать содержимое USB (флэш) в системную директорию

Когда USB накопитель подключен к системе код должен автоматически и инициируют Копирование содержание (Каталоги, файлы и т. Д.) привода usb в каталог резервного копирования по умолчанию Система.

я наткнулся на некоторые сайты и обнаружил, что я могу использовать shutil библиотекуhttps://docs.python.org/2/library/shutil.html операций с файлами высокого уровня. Я не использовал библиотеку Shutil, так что есть ли другой способ достичь,

Кто-нибудь сделал это раньше, поэтому, пожалуйста, помогите. Благодаря

+0

Копирование флэш-накопителя вряд ли будет отличаться от копирования из любого места. Вы понимаете, как копировать любые файлы с помощью 'shutil' или чего-нибудь еще? Где появится файловая система флеш-накопителя, вероятно, будет зависеть от вашей ОС, но как только вы узнаете эту часть, ее немного. – Blckknght

ответ

3

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

Сначала я код для копирования файлов и каталогов с помощью shutil для получения дополнительной помощи https://docs.python.org/2/library/shutil.html, подключения USB-накопитель для выполнения операции

Шаг 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 

вы можете запустить этот файл, чтобы проверить, копируется он или нет, затем

создать файл bash

Этап 2: code_to_copy.ш

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

убедитесь, что разрешения на это файлы

шаг 3: добавить в хрон

$ crontab -e 

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

# файл журнала проверки на /tmp/code_to_copy.log

через минуту подключенное устройство d ata будет скопирована в вашу резервную папку и hola.

2

Вы можете использовать питон shutil библиотеку, которая очень проста в обращении скопировать operations.If вам нужно автоматизировать процесс попробуйте следующие шаги:

1: Если получить все файлы в флэшках или любой другом съемном диске получить все файлы и записать его в список, следующим образом:

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

2: раз то сделано итерацию по списку и использовать shutil библиотеку для копирования файлов.

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

3:. Теперь, если вам нужно автоматизировать процесс создания Баш файл (файл с расширением ш) со следующим содержанием в папку, где питон скрипт присутствует (например: создать файл test.sh и скопировать следующие)

#!/bin/bash 
clear 
python script.py 

4: Затем добавьте это в cronjob, если вам нужно проверить или запустить в specificintervals и если съемный носитель не подключен случай исключения должны быть также обработаны.

5: Для получения источника вы можете использовать подпроцесс в 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 

Это даст путь сменных носителей в устройствах linux.

+0

Привет @vishnu Это помогает мне, но как получить исходный путь для флеш-накопителя? – Kjjassy

+0

@ KamleshJaiswal У меня есть anwser для обнаружения перегружаемых носителей – Vishnu

0

Это пример того, как копировать файл на USB (съемное устройство), вы можете инвертировать.

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))))")