<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xml:lang="fr">

  <title type="html">Humus numericus - Mot-clé - python</title>
  <subtitle type="html"></subtitle>
  <link href="https://blog.nozav.org/feed/tag/python/atom" rel="self" type="application/atom+xml"/>
  <link href="https://blog.nozav.org/" rel="alternate" type="text/html"
  title=""/>
  <updated>2019-05-09T20:00:29+02:00</updated>
  <author>
    <name></name>
  </author>
  <id>urn:md5:c2531a830c9d2a52c5500061b4d5077e</id>
  <generator uri="http://www.dotclear.org/">Dotclear</generator>

  
  <entry>
    <title>Comparaison d'un script simple en Perl, Python et Ruby</title>
    <link href="https://blog.nozav.org/post/2006/08/24/59-comparaison-d-un-script-simple-en-perl-python-et-ruby" rel="alternate" type="text/html"
    title="Comparaison d'un script simple en Perl, Python et Ruby" />
    <id>urn:md5:20caba3addf4b6a47ff026ec563dfa8a</id>
    <published>2006-08-24T01:03:16+00:00</published>
          <updated>2006-08-24T01:03:42+00:00</updated>
            <author><name>Juba</name></author>
        <dc:subject>Linux, Debian, etc.</dc:subject>
        <dc:subject>perl</dc:subject><dc:subject>python</dc:subject><dc:subject>ruby</dc:subject><dc:subject>script</dc:subject>
    <content type="html">    &lt;p&gt;Tiens, suite à une question d'un collègue de boulot aujourd'hui, je me suis amusé à comparer la manière de faire une tâche assez simple dans trois langages de script différents. L'objectif est d'afficher le chemin complet de tous les répertoires contenus (récursivement) dans un répertoire donné (en l'occurrence &lt;code&gt;/var/log&lt;/code&gt;). Je trouve le résultat assez représentatif des particularités des différents langages&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;En Python&lt;/strong&gt;&lt;/p&gt;


&lt;pre&gt;import os
from os.path import join
for root, dirs, files in os.walk('/var/log'):
    for name in dirs:
        print join(root, name)&lt;/pre&gt;


&lt;p&gt;C'est pas forcément super intuitif (faut comprendre que la fonction &lt;code&gt;os.walk&lt;/code&gt; renvoit un &lt;em&gt;tuple&lt;/em&gt; avec le répertoire racine, les répertoires contenus et les fichiers contenus de chaque sous-répertoire parcouru. Mais c'est assez efficace.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;En Perl&lt;/strong&gt;&lt;/p&gt;


&lt;pre&gt;use File::Find;
find sub { print $File::Find::name, &quot;
&quot; if -d } , '/var/log';&lt;/pre&gt;


&lt;p&gt;Ah bah c'est sûr, difficile de faire plus bref. Mais c'est pas forcément évident du premier coup d'oeil, entre l'utilisation d'une référence à une fonction en argument de &lt;code&gt;find&lt;/code&gt;, ou celui du test &lt;code&gt;-d&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;En Ruby&lt;/strong&gt;&lt;/p&gt;


&lt;pre&gt;require 'find'
Find.find('/var/log') { |path| puts path if File.directory?(path) }&lt;/pre&gt;


&lt;p&gt;Et voilà. Simple, lisible, compact, compréhensible (du moins si on a compris le concept de bloc et d'itérateur). En un mot&amp;nbsp;: &lt;em&gt;é-lé-gant&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;Bon, allez, je suis pas tout à fait objectif, je vous l'accorde...&lt;/p&gt;</content>

    


      </entry>
  
</feed>
