Dir.glob pour obtenir tous les fichiers csv et xls dans le dossier
folder_to_analyze = ARGV.first
folder_path = File.join(Dir.pwd, folder_to_analyze)
unless File.directory?(folder_path)
puts "Error: #{folder_path} no es un folder valido."
exit
end
def get_csv_file_paths(path)
files = []
Dir.glob(path + '/**/*.csv').each do |f|
files << f
end
return files
end
def get_xlsx_file_path(path)
files = []
Dir.glob(path + '/**/*.xls').each do |f|
files << f
end
return files
end
files_to_process = []
files_to_process << get_csv_file_paths(folder_path)
files_to_process << get_xlsx_file_path(folder_path)
puts files_to_process[1].length # Not what I want, I want:
# puts files_to_process.length
Je suis en train de faire un simple script en Ruby qui me permet de l'appeler à partir de la ligne de commande, comme ruby counter.rb mailing_list1
et il va dans le dossier et compte de tous .csv et .les fichiers xls.
J'ai l'intention d'opérer sur chaque fichier, l'obtention d'un nombre de lignes, etc.
Actuellement la files_to_process
tableau est en fait un tableau de tableau - je n'en veux pas. Je veux avoir un tableau unique à la fois .csv et .les fichiers xls.
Car je ne sais pas comment le rendement de la Dir.glob
appel, j'ai ajouté un tableau et retourné.
Comment puis-je le faire à l'aide d'une matrice unique?
source d'informationauteur sergserg | 2013-06-05
Vous devez vous connecter pour publier un commentaire.
Bien, le rendement est simple. Juste
yield
.De chaque méthode en ruby peut être passé d'un bloc. Et
yield
mot-clé envoie des données à bloc. Si le bloc peut ou peut ne pas être fourni,yield
est généralement utilisé avecblock_given?
.Mise à jour
Le code peut être simplifié en passant votre bloc directement à
glob.each
:Bien que ce bloc/proc conversion est un peu de la rubrique avancé.
Il suffit de coller les extensions de fichiers ensemble dans un groupe:
La
get_folder_paths
méthode renvoie un tableau de CSV et XLS fichiers. La construction d'un tableau de noms de fichier ne peut pas être ce que vous voulez vraiment, surtout si il y a un beaucoup d'entre eux. Une approche à l'aide de l'agent Recenseur retourné par la Dir.glob serait plus approprié dans ce cas, si vous n'avez pas besoin du fichier.