Δημιουργία hash από όλα τα αρχεία ενός είδους (π.χ.εικόνας) ενός φακέλου και όλων των υποφακέλων του.

Added by gio about 1 year ago

Γεια και Χαρά...

είμαι εντελώς αρχάριος... και θα ήθελα να ρωτήσω πως θα υλοποιούσε κανείς σε ruby ή σε RoR ή ακόμα και αν κάτι τέτοιο υπάρχει έτοιμο, το εξής:

Μια υπορουτίνα π.χ. class ή method ή ό,τι άλλο,
στην οποία θα δίνει κανείς απλά ένα path ενός φακέλου και το είδος των αρχείων (π.χ. .mp3 ή .mov ή .jpg) και θα "λαμβάνει" ή καλύτερα η υπορουτίνα θα δημιουργούσε έναν πίνακα ή ένα hash με στοιχεία όλα τα αρχεία του δοσμένου είδους στον φάκελο αλλά και στους υποφακέλους του.

ευχαριστώ για τις όποιες ιδέες - βοήθειες !

gio


Replies (3)

RE: Δημιουργία hash από όλα τα αρχεία ενός είδους (π.χ.εικόνας) ενός φακέλου και όλων των υποφακέλων του. - Added by gio about 1 year ago

Η παρθενική μου προσπάθεια με αρκετό googeling κατέληξε εδώ:

require 'find'

images_file_paths = []
image_extensions_array =[".jpg", ".JPG", ".png", ".PNG"]

Find.find('/Users/gioshomefolder/Pictures') do |path|
image_extensions_array.each do |extension|
images_file_paths << path if File.extname(path) == extension
end
end

puts images_file_paths # αυτή και η επόμενη γραμμή φυσικά δεν χρειάζονται...
puts image_extensions_array.inspect

RE: Δημιουργία hash από όλα τα αρχεία ενός είδους (π.χ.εικόνας) ενός φακέλου και όλων των υποφακέλων του. - Added by nkokkos about 1 year ago

Γειά σου Gio. Καλώς ήρθες στους rubyst.es.
Καλή προσπάθεια αυτό με την εύρεση αρχείων, όμως η λύση που πρότεινες είχε να κάνει με array και όχι με hash, όπως το
ειχες σκεφτεί αρχικά. Το hash είναι μια δομή δεδομένων για την οποία έχεις ένα κλειδί που δείχνει σε κάποιο datum.
Δηλαδή, κλειδί1 => δεδομένο1, κλειδί2 => δεδομένο2 κτλ.
Καλως ήλθες και πάλι.

RE: Δημιουργία hash από όλα τα αρχεία ενός είδους (π.χ.εικόνας) ενός φακέλου και όλων των υποφακέλων του. - Added by gio about 1 year ago

Ευχαριστώ για την επισήμανση!
Θέλω να προσθέσω πως προσπάθησα τον έλεγχο της κατάληξης να τον κάνω με iterator αλλά δεν τα κατάφερα...

Προχορώντας θέλω να δω πως θα έπρεπε να γραφτεί ώστε να λειτουργεί ως υπορουτίνα (class, method, module δεν έχω αποσαφηνήσει ακόμα τις διαφορές και τις χρήσεις τους) η οποία θα λαμβάνει ως παραμέτρους το παθ (path) και το είδος και θα επιστρέφει το array ή hash.

Τώρα σχετικά με την επισήμανση (θα το δοκιμάσω κιόλας αλλά ας ρωτήσω πρώτα), Αν ήταν να γίνει με hash όπως αρχικά είπα θα είχε κάποια άλλη διαφορά ο κώδικας πέραν της αλλάγης της 3ης σειράς των αγκυλών [] σε άγκιστρα {} ;

Κλείνοντας θα μπω ήδη από τώρα στην επόμενη φάση που είναι μια νέα υπορουτίνα η οποία να πέρνει τον πίνακα ή hash της προηγούμενης και να "παρουσιάζει" είτε ένα μετά το άλλο, είτε τυχαία τα στοιχεία (δηλ. τα αρχεία) που βρίσκονται μέσα στον πίνακα. Υποθέτω πως θα υπάρχουν για αυτό έτοιμες υπορουτίνες ιδιαίτερα στο RoR και προς τούτο θα ήθελα την όποια βοήθεια ή και συμπαράσταση εκ μέρους σας :) . Τώρα όταν λέω να παρουσιάζει, εννοώ αν π.χ. είναι αρχεία εικόνας να απεικονίζονται στην οθόνη μέχρις ότου πατηθεί κάποιο πλήκτρο (πληκτρολογίου ή ποντικιού), αν είναι αρχεία ήχου να αναπαράγωνται από τα ηχεία, κλπ.

(1-3/3)