Quel est le meilleur langage pour manipuler des dossiers et des fichiers ?

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je souhaite créer un programme ou un script qui me permet de manipuler une arborescence de dossiers et de fichiers sur le système d'exploitation Windows. - Parcours de cette arborescence - Recherche de fichier - Renommage de fichiers - Édition des fichiers, recherches d’occurrences et remplacement, utilisation de Regex

Quel langage de programmation ou de script pensez vous est le plus adapté pour cette tâche ?

Merci d'avance pour votre aide :)

Salut,

Je dirais que Python est probablement ce qui sera le plus pratique. D'une part parce qu'il sera facile à apprendre (du moins pour pondre des scripts basiques) mais aussi parce qu'il dispose d'abstractions intéressantes pour manipuler les noms de fichiers. Enfin, effet de bord sympa, il pourra t'être utile pour d'autres programmes à l'avenir.

+3 -0

De mon point de vue, deux solutions simples se détachent :
Python et Perl.

Comme dit au dessus, tu pourras certainement avoir plus de facilités avec Python dans d'autres domaines. Mais je te conseille d'essayer les deux, et de choisir le langage qui te conviendra le mieux.

Salut, pour ma part, mes connaissances se limites aux langage C surtout, c'est une alternative sympa notamment pour la gestion de la mémoire et les programmes systèmes. Pour la gestion des fichiers, il n'en est pas de moins, c'est un langage facile à apprendre en soi mais qui à une capacité à se rapprocher du langage d'assemblage.

Surtout, les tâches que veut effectuer l'OP relèvent du scripting. J'aime le C mais il y a clairement beaucoup plus adapté. La gestion de la mémoire on s'en fout pour renommer des fichiers. De plus, le C n'est pas un langage facile à apprendre: les pointeurs introduisent pas mal de problèmes pour un débutant. Dire qu'il est proche du langage d'assemblage a tendance à m'irriter: tu as déjà vu de l'assembleur, rassure-moi ? Si oui tu verras la différence, elle est très nette. Je vois pas en quoi il y a une proximité avec l'assembleur significative.

Salut,

Dire qu'il est proche du langage d'assemblage a tendance à m'irriter: tu as déjà vu de l'assembleur, rassure-moi ? Si oui tu verras la différence, elle est très nette. Je vois pas en quoi il y a une proximité avec l'assembleur significative.

Grimur

Je pense que ce que Ozmox voulait dire, c'est qu'il est possible, dans une certaine mesure, d'apercevoir à quoi ressemblera le code Assembleur une fois le code C compilé. Bien sûr, cela est moins vrai aujourd'hui au vu des optimisations réalisées par les compilateurs, mais c'est toujours possible à l'inverse d'autres langages (bonne chance pour faire pareil en Haskell par exemple). De même, il est facile d'interfacer le C avec de l'Assembleur.

+0 -0

On peut aussi utiliser PHP pour faire de petits scripts à exécuter en ligne de commande.

Si tu ne le connais pas, ce n'est pas son objectif premier donc prends autre chose, mais dans le cas où tu veux réutiliser tes connaissances, tu n'es ainsi pas absolument obligé d'apprendre un autre langage.

En réponse plus générale, outre python ou ruby, lua n'est pas mal non plus. IL a au moins le mérite d'être ultra-compact et très simple.

Je plussoie les avis précédents en ce qui concerne C et C++, à déconseiller très fortement pour cette utilisation car bien trop compliqués dans ce contexte.

+1 -1

Bonjour.

Ah la la, les topics "quel est le meilleur langage pour XXX?"… Toujours pareil 50 langages sont cités, mais c'est toujours très compliqué de faire un argumentaire précis.

Bon, déjà, non le C n'est pas une alternative. l'OP demande un langage pour du scripting, le C n'est pas fait pour ça, donc on enlève.

Viennent ensuite le trio historique :

  • pyhton
  • pearl
  • ruby

Je ne connais que python très personnellement, et je te le conseille pour plusieurs raisons absolues (c'est à dire sans comparer aux autres, ça sert à rien, ils sauront se plier aux mêmes arguments d'une manière plus ou moins similaire)

  • il est extrêmement rapide de scripter avec python, tu as pas mal de choses qui te permettent de parcourir des collections avec peu de lignes de code mais en restant expressif
  • python3 gère nativement tous les encodages et utilise par défaut utf8, du coup que ça soit sur linux ou windows, tu peux te permettre d'avoir des chemins bizarres et des fichiers avec des caractères spéciaux
  • python possède un ensemble plutôt efficace de lib pour aller chercher et traiter les données, en faire des stats, des clusters etc.
  • python3 t'ouvre un accès simple à la programmation asynchrone particulièrement utile quand tu dois aller chercher des fichiers car ces opérations sont en fait 90% d'attente pour seulement 10% de logique programmatique.

Notons que depuis quelques années php est une alternative plutôt sympa pour le scripting MAIS pour la gestion de gros ensembles de données (plus de 100 000 ensembles de plus de 1Mo) ou de fichiers relativement nombreux (>1000 fichiers) je ne te le conseille pas car il n'a aucun concept d'asynchrone pour l'instant.

Autre note, les langages fonctionnels sont particulièrement bien adapté pour les process de gestion de données, c'est dans leur nature. Malheureusement, je n'en connais aucun suffisament pour te les conseiller.

Pour pratiquer Python et Perl (5) au boulot, j'aurais tendance à conseiller Python 3 qui permet de manipuler très facilement des arborescences de fichiers grâce à son module standard pathlib (inclus dans le langage depuis Python 3.4). Au niveau de la manipulation de dossiers, Perl n'offre pas nativement d'API plus commode que les appels système Posix que l'on retrouve en C.

Bref, l'avantage de Python sur Perl pour un débutant qui veut rapidement arriver à un résultat c'est que les piles sont inclues dans la boîte.

Quant à Lua : il n'est pas plus adapté que C dans ce cas précis.

+0 -0

Quant à Lua : il n'est pas plus adapté que C dans ce cas précis.

J'aimerais bien que tu argumentes là-dessus, en toute neutralité (ou autrement dit sans argument subjectif genre je n'aime pas ce langage)

Pour moi le C n'est clairement pas adapté parce que la manipulation de chaîne est un casse-tête inutile. Tout le monde s'accorde à peu près là-dessus.

Le C++ non plus parce qu'il n'est pas fait pour faire de petits programmes rapidement qui fonctionnent en 5 minutes.

Mais… lua, la manipulation des chaîne n'est pas un problème, et on peut faire un petit script fonctionnel en 5 minutes. Mème si python est bien sûr beaucoup, beaucoup, beaucoup plus fourni en fonctionnalités de base, à mon sens pour des petits scripts très simples il peut suffire. En ce qui me concerne il m'a déjà dépanné alors que je ne souhaitais pas me mettre à python à cause d'une aversion personnelle. En plus il existe un pack "lua for windows" qui contient, comme le nom l'indique, quelques modules bien utiles pour ce système…

+0 -0

Ne te méprends pas, j'aime beaucoup Lua et je m'amuse pas mal avec. Mais ça n'est pas sa vocation d'être un langage de scripting système standalone comme peuvent l'être Python et Perl. Il lui manque une vraie bibliothèque standard pour offrir tout le confort qu'on attend d'un langage de script à l'utilisateur, donc ce serait un peu comme faire du vélo avec un siège en bois.

Par contre il a d'autres qualités : il est vraiment extrêmement commode à embarquer dans un programme en C ou C++, et ses performances sont éblouissantes.

Il est complémentaire aux autres en fait :

  • On pense un programme en Python quitte ensuite optimiser certains morceaux de code en C.
  • À l'inverse, on pense un programme en C quitte à se servir de Lua pour lui construire une API à haut niveau et qui permet de créer facilement des extensions.
+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte