Triedenie fotiek

Všetko ohľadom Linuxu...
MA_SK
Light Expert
Light Expert
Príspevky: 60
Registrovaný: 03 mar 2011, 9:04

Triedenie fotiek

Príspevok od používateľa MA_SK »

Ahojte, cez program PhotoRec som si obnovil fotky zo stareho HDD, a teraz by som ich chcel roztriediť podla velkosti do zložiek keďže mi ich obnovilo 200 000.
Potreboval by som na to nejaký skript asi však?...neviete niečo o tom ?
OS mám Ubuntu 16.04

Ďakujem za odpovede majstri! :)
S.T.E.A.L.T.H
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 933
Registrovaný: 31 jan 2010, 14:44
Bydlisko: Pegasus Galaxy

Re: Triedenie fotiek

Príspevok od používateľa S.T.E.A.L.T.H »

Tu mas skirpt zbuchany na kolene. Uloz si ho do nazov.py o uroven vyssie ako mas subory. Cize ak to mas subory v zlozke /home/user/subory tak skript hod do /home/user. Premennu conf["dir"] nastav ako conf["dir"] = "subory" a conf["n"] po kolko chces aby to zgrupovalo. Napr. ak chces grupy po 5, tak nastav conf["n"] = 5. Ak existuju v zlozke /home/user/subory nejake podadresare, tak skript precita aj tie. V pripade, ze su niekde totozne nazvy, tak to nie je zaujimave, pretoze pred nazov suboru skript prida nahodne cislo. Subory budu nahadzane v zlozke sorted/cislo, kde "cislo" rastie od 1 hore a obsahuje conf["n"] suborov, pricom sa zgrupuje od najmensieho.

Skript spust potom z terminalu ako python3 nazov.py

Dufam, ze pomoze.
Enjoy

Kód: Vybrať všetko

import os
import ntpath
import shutil
from shutil import copyfile as copy
import random


conf = dict({})
conf["dir"] = "files"
conf["n"] = 5


def get_size(filename):
    return os.stat(filename).st_size


f_counter = 0
dir_counter = 1

current_dir = os.path.dirname(os.path.realpath(__file__))
directory, file_list = current_dir + "/" + conf["dir"], []

for path, subdirs, files in os.walk(directory):
    for name in files:
        file_list.append([os.path.join(path, name), get_size(os.path.join(path, name))])
file_list = sorted(file_list, key=lambda x: x[1])

if not os.path.isdir("./sorted"):
    os.mkdir("./sorted", 0o755)
else:
    print("Warning: directory \"./sorted\" already exists")

for item in file_list:
    if f_counter % conf["n"] == 0:
        nxt = current_dir + "/sorted/" + str(dir_counter)
        if os.path.isdir(nxt):
            shutil.rmtree(nxt)

        os.mkdir(nxt, 0o755)
        dir_counter += 1

    to = current_dir + "/sorted/" + str(dir_counter - 1) + "/" + str(random.random()) + "_" + str(
        ntpath.basename(item[0]))
    copy(item[0], to)
    f_counter += 1
Napísať odpoveď