Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ouvrir une liste de fichiers avec Python

    3 mars 2016 à 22:35:25

    Bonjour,

    Je me permets de poster un message afin d'avoir vos avis et éventuellement un petit peu d'aide sur ce que je souhaite faire.

    J'ai écrit un programme permettant de lire un fichier .fits que je donne en entrée, puis j'applique un tri selon quelques conditions, j'effectue un tracé et je détermine 2-3 choses.

    Cela marche très bien pour le moment avec un seul fichier que je rentre "manuellement" dans mon code, mais voilà, j'ai en tout 180 fichiers que je souhaite traiter et tous les faire un par un à la main est clairement une perte de temps !

    C'est pourquoi, j'aimerais que mon code lise ma liste de fichiers, que j'aurais au préalable rentré dans un fichier .txt.

    Néanmoins, cela ne semble pas fonctionner pour des raisons qui me sont inconnues.

    Voilà mon code actuel :

    #!/usr/bin/python
    # coding: utf-8
     
    from astropy.io import fits
    from astropy.table import Table
    import numpy as np
    import matplotlib.pyplot as plt
     
                #########################################
                # Fichier contenant la liste des champs #
                #########################################
    
    for c_file in open('liste_champs.txt', 'r'):
    
    	filename = c_file
     
    	reading = fits.open(filename)          # Ouverture du fichier à l'aide d'astropy
     
    	tbdata = reading[1].data               # Lecture des données fits
    
    
      	    #######################################################
                # Application du tri en fonction de divers paramètres #
                #######################################################
     
    	mask1 = tbdata['CHI'] < 1.0 		# Création d'un masque pour la condition CHI
    	tbdata_temp1 = tbdata[mask1]
    
    	mask2 = tbdata_temp1['PROB'] > 0.01	# Création d'un second masque sur la condition PROB
    	tbdata_temp2 = tbdata_temp1[mask2]
    
    	mask3 = tbdata_temp2['SHARP'] > -0.4 	# Création d'un 3e masque sur la condition SHARP (1/2)
    	tbdata_temp3 = tbdata_temp2[mask3]
    
    	mask4 = tbdata_temp3['SHARP'] < 0.1	# Création d'un 4e masque sur la condition SHARP (2/2)
    	tbdata_final = tbdata_temp3[mask4]
    
    	#print tbdata_final			# Affichage de la table après toutes les conditions
    
    
    	plt.plot(tbdata_final['G'] - tbdata_final['R'], tbdata_final['G'], '.')
    	plt.title('Diagramme Couleur-Magnitude')
    	plt.xlabel('(g-r)')
    	plt.ylabel('g')
    	plt.xlim(-2,2)
    	plt.ylim(15,26)
    	plt.gca().invert_yaxis()
    	plt.show()
    
    
    	hdu = fits.BinTableHDU(data=tbdata_final)
    	hdu.writeto('{}_{}.fits'.format(filename, 'output'))		# Ecriture du résultat obtenu dans un nouveau fichier fits
    
    
                #################################################
                # Détermination des valeurs extremales du champ #
                #################################################
     
    	#RA_max = np.max(tbdata['RA'])
    	#RA_min = np.min(tbdata['RA'])
    	#print "RA_max vaut :     " + str(RA_max)
    	#print "RA_min vaut :     " + str(RA_min)
     
    	#DEC_max = np.max(tbdata['DEC'])
    	#DEC_min = np.min(tbdata['DEC'])
    	#print "DEC_max vaut :   " + str(DEC_max)
    	#print "DEC_min vaut :   " + str(DEC_min)
     
                #########################################
                # Calcul de la valeur centrale du champ #
                #########################################
     
    	#RA_central = (RA_max + RA_min)/2.
    	#DEC_central = (DEC_max + DEC_min)/2.
     
    	#print "RA_central vaut : " + str(RA_central)
    	#print "DEC_central vaut : " + str(DEC_central)
     
    	#reading.close()

    Et mon fichier .txt se compose de la façon suivante (je n'ai mis que 2 éléments pour commencer sans perdre du temps, évidemment cela devrait fonctionner pareil avec 2 éléments comme 180) :

    Enfin, l'erreur que j'obtiens est la suivante :

    valentin@valentin-GE70-2PC:~/Desktop$ python program.py 
    /home/valentin/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
      warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
    Traceback (most recent call last):
      File "program.py", line 17, in <module>
        reading = fits.open(filename)          # Ouverture du fichier à l'aide d'astropy
      File "/home/valentin/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/astropy/io/fits/hdu/hdulist.py", line 138, in fitsopen
        return HDUList.fromfile(name, mode, memmap, save_backup, cache, **kwargs)
      File "/home/valentin/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/astropy/io/fits/hdu/hdulist.py", line 280, in fromfile
        save_backup=save_backup, cache=cache, **kwargs)
      File "/home/valentin/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/astropy/io/fits/hdu/hdulist.py", line 801, in _readfrom
        ffo = _File(fileobj, mode=mode, memmap=memmap, cache=cache)
      File "/home/valentin/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/astropy/io/fits/file.py", line 141, in __init__
        self._open_filename(fileobj, mode, clobber)
      File "/home/valentin/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/astropy/io/fits/file.py", line 493, in _open_filename
        self._file = fileobj_open(self.name, PYFITS_MODES[mode])
      File "/home/valentin/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/astropy/io/fits/util.py", line 415, in fileobj_open
        return open(filename, mode)
    IOError: [Errno 2] No such file or directory: 'Field17_combined_final_roughcal.fits\n'
    valentin@valentin-GE70-2PC:~/Desktop$ 
    

    Peut-être avez vous une idée du problème ou une façon autre de faire ?

    Merci d'avance !


    • Partager sur Facebook
    • Partager sur Twitter
    Rien ne se crée, rien ne se perd, tout se transforme ...
      4 mars 2016 à 12:24:57

      essaye d'afficher le contenu de filename ligne 15 je pense que y a un '\n' qui traine.
      • Partager sur Facebook
      • Partager sur Twitter
        4 mars 2016 à 12:52:44

        Pourtant quand on regarde le fichier txt, il n'y a que 2 lignes non ?
        • Partager sur Facebook
        • Partager sur Twitter
        Rien ne se crée, rien ne se perd, tout se transforme ...
          4 mars 2016 à 13:28:26

          Prends le temps de regarder l'erreur que te renvoie python:

          No such file or directory: 'Field17_combined_final_roughcal.fits\n'


          As-tu un fichier qui porte le même nom? La réponse est non, car il y a un \n à la fin du nom recherché. C'est ce qu'on appelle un caractère de contrôle. Ces caractères sont "invisible" mais définissent tout de même des actions bien précise. C'est le cas du saut de ligne (ou retour chariot): \n, de la tabulation \t, ... Voici une petite liste trouvée sur le net.

          Bref, dans ton fichier les deux chemins sont sur des lignes différentes (donc tu as utilisé un saut de ligne pour les séparer). Et bien qu'invisible à l'affichage, il existe dans la chaîne de caractère:

          #Visible dans la chaîne
          chn = "Hello\nWorld\n!!!"
          
          #Invisible à l'affichage
          print(chn)


          Bref, il faut donc faire un pré-traitement avant d'essayer d'ouvrir ton fichier. Il faut utiliser la méthode strip des chaînes qui va retirer les caractères de contrôle (et les espaces) EN DÉBUT ET FIN DE CHAÎNE. Mais pas au milieu. Donc dans mon précédent exemple, aucun caractère ne sera supprimé (car il sont tous en milieu de chaîne). Mais dans l'exemple suivant ça sera le cas:

          chn = "  \t\nHello World!!!\t\n     \n"
          
          #On nettoie la chaîne 
          chn = chn.strip()
          • Partager sur Facebook
          • Partager sur Twitter
          Précepte: Le mieux est l'ennemi du bien
            4 mars 2016 à 13:55:20

            D'accord, j'imagine que cela doit s'écrire à peu près de cette façon dans mon cas :

            #!/usr/bin/python
            # coding: utf-8
             
            from astropy.io import fits
            import numpy as np
            #import matplotlib.pyplot as plt
             
                        #########################################
                        # Fichier contenant la liste des champs #
                        #########################################
            
            chn = open('liste_champs.txt', 'rw')
            contenu = chn.read().strip()
            
            print contenu
            
            Save = contenu.write('liste_champs_cor.txt')
            
            
            
            for c_file in open('liste_champs_cor.txt', 'r'):
            
            	filename = c_file
             
            	reading = fits.open(filename)          # Ouverture du fichier à l'aide d'astropy
             
            	tbdata = reading[1].data               # Lecture des données fits
            
            
              	    #######################################################
                        # Application du tri en fonction de divers paramètres #
                        #######################################################
             
            	mask1 = tbdata['CHI'] < 1.0 		# Création d'un masque pour la condition CHI
            	tbdata_temp1 = tbdata[mask1]
            
            	mask2 = tbdata_temp1['PROB'] > 0.01	# Création d'un second masque sur la condition PROB
            	tbdata_temp2 = tbdata_temp1[mask2]
            
            	mask3 = tbdata_temp2['SHARP'] > -0.4 	# Création d'un 3e masque sur la condition SHARP (1/2)
            	tbdata_temp3 = tbdata_temp2[mask3]
            
            	mask4 = tbdata_temp3['SHARP'] < 0.1	# Création d'un 4e masque sur la condition SHARP (2/2)
            	tbdata_final = tbdata_temp3[mask4]
            
            	#print tbdata_final			# Affichage de la table après toutes les conditions
            
            
            	plt.plot(tbdata_final['G'] - tbdata_final['R'], tbdata_final['G'], '.')
            	plt.title('Diagramme Couleur-Magnitude')
            	plt.xlabel('(g-r)')
            	plt.ylabel('g')
            	plt.xlim(-2,2)
            	plt.ylim(15,26)
            	plt.gca().invert_yaxis()
            	plt.show()
            
            
            	hdu = fits.BinTableHDU(data=tbdata_final)
            	hdu.writeto('{}_{}.fits'.format(filename, 'output'))		# Ecriture du résultat obtenu dans un nouveau fichier fits
            
            
                        #################################################
                        # Détermination des valeurs extremales du champ #
                        #################################################
             
            	#RA_max = np.max(tbdata['RA'])
            	#RA_min = np.min(tbdata['RA'])
            	#print "RA_max vaut :     " + str(RA_max)
            	#print "RA_min vaut :     " + str(RA_min)
             
            	#DEC_max = np.max(tbdata['DEC'])
            	#DEC_min = np.min(tbdata['DEC'])
            	#print "DEC_max vaut :   " + str(DEC_max)
            	#print "DEC_min vaut :   " + str(DEC_min)
             
                        #########################################
                        # Calcul de la valeur centrale du champ #
                        #########################################
             
            	#RA_central = (RA_max + RA_min)/2.
            	#DEC_central = (DEC_max + DEC_min)/2.
             
            	#print "RA_central vaut : " + str(RA_central)
            	#print "DEC_central vaut : " + str(DEC_central)
             
            	#reading.close()

            Même si je ne suis pas sûr de la ligne

            Save = contenu.write('liste_champs_cor.txt')




            • Partager sur Facebook
            • Partager sur Twitter
            Rien ne se crée, rien ne se perd, tout se transforme ...
              4 mars 2016 à 14:41:13

              J'ai une liste initiale de 2 fichiers, néanmoins, après avoir traité le premier, il ne lis pas la seconde ligne :/

              #!/usr/bin/python
              # coding: utf-8
                
              from astropy.io import fits
              import numpy as np
              import matplotlib.pyplot as plt
                
                          #########################################
                          # Fichier contenant la liste des champs #
                          #########################################
               
              chn = open('/astromaster/home/jungbluth/Bureau/Stage/liste_champs.txt', 'r')		# Ouverture de la liste des fichiers initiale
              contenu = chn.readline().strip()							# Lecture de chaque ligne et suppression des caractères invisibles
               
              print contenu										# Affichage de la liste corrigée
              
              Save = open('/astromaster/home/jungbluth/Bureau/Stage/liste_champs_cor.txt','w')	# Ecriture de la liste corrigée dans un fichier liste_champ_cor 
              Save.write(contenu) 
               
              chn.close()										# Fermeture de la variable chn
              Save.close()										# Fermeture de la variable Save
               
              
              for c_file in open('/astromaster/home/jungbluth/Bureau/Stage/liste_champs_cor.txt', 'r'):	# Ouverture du fichier cor.txt et lecture ligne par ligne
              
                  filename = c_file
                
                  reading = fits.open(filename)         						 # Ouverture du fichier .fits à l'aide d'astropy
                
                  tbdata = reading[1].data              						 # Lecture des données fits
               
              
                          #######################################################
                          # Application du tri en fonction de divers paramètres #
                          #######################################################
                
                  mask1 = tbdata['CHI'] < 1.0     							 # Création d'un masque pour la condition CHI
                  tbdata_temp1 = tbdata[mask1]
               
                  mask2 = tbdata_temp1['PROB'] > 0.01 						 # Création d'un second masque sur la condition PROB
                  tbdata_temp2 = tbdata_temp1[mask2]
               
                  mask3 = tbdata_temp2['SHARP'] > -0.4   						 # Création d'un 3e masque sur la condition SHARP (1/2)
                  tbdata_temp3 = tbdata_temp2[mask3]
               
                  mask4 = tbdata_temp3['SHARP'] < 0.1  						 # Création d'un 4e masque sur la condition SHARP (2/2)
                  tbdata_final = tbdata_temp3[mask4]
               
                  print tbdata_final         								 # Affichage de la table après toutes les conditions
               
               
                 # plt.plot(tbdata_final['G'] - tbdata_final['R'], tbdata_final['G'], '.')
                #  plt.title('Diagramme Couleur-Magnitude')
                #  plt.xlabel('(g-r)')
                #  plt.ylabel('g')
                #  plt.xlim(-2,2)
                #  plt.ylim(15,26)
                #  plt.gca().invert_yaxis()
                #  plt.show()
                 # plt.saveplot('Figure 1')
               
               
                  hdu = fits.BinTableHDU(data=tbdata_final)
                  hdu.writeto('{}_{}'.format(filename, 'traité'))        				 # Ecriture du résultat obtenu dans un nouveau fichier fits
               
               
                          #################################################
                          # Détermination des valeurs extremales du champ #
                          #################################################
                
                  RA_max = np.max(tbdata['RA'])
                  RA_min = np.min(tbdata['RA'])
                  print "RA_max vaut :     " + str(RA_max)
                  print "RA_min vaut :     " + str(RA_min)
                
                  DEC_max = np.max(tbdata['DEC'])
                  DEC_min = np.min(tbdata['DEC'])
                  print "DEC_max vaut :   " + str(DEC_max)
                  print "DEC_min vaut :   " + str(DEC_min)
                
                          #########################################
                          # Calcul de la valeur centrale du champ #
                          #########################################
                
                  RA_central = (RA_max + RA_min)/2.
                  DEC_central = (DEC_max + DEC_min)/2.
                
                  print "RA_central vaut : " + str(RA_central)
                  print "DEC_central vaut : " + str(DEC_central)
                
              	#reading.close()



              -
              Edité par Andromedae93 4 mars 2016 à 15:26:52

              • Partager sur Facebook
              • Partager sur Twitter
              Rien ne se crée, rien ne se perd, tout se transforme ...
              Anonyme
                4 mars 2016 à 18:33:00

                Est-ce que le nombre de tes fichiers est voué à devenir (très) grand ou est-ce qu'il va rester dans les ordres de grandeur de la centaine ou du millier de fichier? Si tu es certain que tu n'auras pas à traiter des centaines de millier de fichiers (ou des millions :p) alors tu peux obtenir une liste des fichiers très facilement, je te donne un exemple de la méthode que j'ai en tête:

                # Lecture des chemins pour les fichiers
                with open("liste_champs.txt", 'r') as f:
                    fichier_entier = f.read()
                    files = fichier_entier.split("\n")
                    # Les deux lignes du dessus peuvent être remplacées par:
                    # files = f.read().split()
                # Pas besoin de fermer le fichier, with s'en occupe à notre place 
                
                # Puis après tu fais ton traitement sur tous les fichiers:
                for fichier in files:
                    with open(fichier, 'r'):
                        # Je traite
                    # Pas besoin de fermer le fichier
                

                Maintenant pour ton problème, ça vient du fait que tu n'utilise pas la bonne méthode ;) readline() ne va lire qu'une seule ligne dans le fichier, c'est pour ça que tu n'as qu'un seul fichier qui est traité! :p Fait une boucle pour être certain de traiter toutes les lignes contenues dans le fichier :)

                • Partager sur Facebook
                • Partager sur Twitter
                  4 mars 2016 à 19:34:27

                  Je te remercie de ta réponse Nelimee, je vais tester cela et je te tiens au courant ;)

                  Sinon, je pensais éventuellement fonctionner de la façon suivante le début de mon code :

                  #!/usr/bin/python
                  # coding: utf-8
                  
                  from astropy.io import fits
                  import numpy as np
                  import matplotlib.pyplot as plt
                  import os
                  
                  indir = '/home/valentin/Desktop/Fields'
                  
                  for root, dirs, filenames in os.walk(indir) :
                  
                      for f in filenames :
                  
                          reading = fits.open(filenames)          # Ouverture du fichier à l'aide d'astropy
                  
                          tbdata = filenames[1].data               # Lecture des données fits
                  
                  
                          #######################################################
                          # Application du tri en fonction de divers paramètres #
                          #######################################################
                  
                      mask1 = tbdata['CHI'] < 1.0                                  # Création d'un masque pour la condition CHI
                      tbdata_temp1 = tbdata[mask1]
                  
                      mask2 = tbdata_temp1['PROB'] > 0.01                          # Création d'un second masque sur la condition PROB
                      tbdata_temp2 = tbdata_temp1[mask2]
                  
                      mask3 = tbdata_temp2['SHARP'] > -0.4                         # Création d'un 3e masque sur la condition SHARP (1/2)
                      tbdata_temp3 = tbdata_temp2[mask3]
                  
                      mask4 = tbdata_temp3['SHARP'] < 0.1                          # Création d'un 4e masque sur la condition SHARP (2/2)
                      tbdata_final = tbdata_temp3[mask4]
                  
                      print tbdata_final                                       # Affichage de la table après toutes les conditions
                  
                  
                      hdu = fits.BinTableHDU(data=tbdata_final)
                      hdu.writeto('{}_{}'.format(filename, 'traité'))                      # Ecriture du résultat obtenu dans un nouveau fichier fits
                  
                  
                          #################################################
                          # Détermination des valeurs extremales du champ #
                          #################################################
                  
                      RA_max = np.max(tbdata['RA'])
                      RA_min = np.min(tbdata['RA'])
                      print "RA_max vaut :     " + str(RA_max)
                      print "RA_min vaut :     " + str(RA_min)
                  
                      DEC_max = np.max(tbdata['DEC'])
                      DEC_min = np.min(tbdata['DEC'])
                      print "DEC_max vaut :   " + str(DEC_max)
                      print "DEC_min vaut :   " + str(DEC_min)
                  
                          #########################################
                          # Calcul de la valeur centrale du champ #
                          #########################################
                  
                      RA_central = (RA_max + RA_min)/2.
                      DEC_central = (DEC_max + DEC_min)/2.
                  
                      print "RA_central vaut : " + str(RA_central)
                      print "DEC_central vaut : " + str(DEC_central)
                  
                          #######################################
                          # Traçage diagramme Couleur-Magnitude #
                          #######################################
                  
                  
                      plt.plot(tbdata_final['G'] - tbdata_final['R'], tbdata_final['G'], '.')
                      plt.title('Diagramme Couleur-Magnitude')
                      plt.xlabel('(g-r)')
                      plt.ylabel('g')
                      plt.xlim(-2,2)
                      plt.ylim(15,26)
                      plt.gca().invert_yaxis()
                    # plt.show()
                  
                      #reading.close()



                  • Partager sur Facebook
                  • Partager sur Twitter
                  Rien ne se crée, rien ne se perd, tout se transforme ...
                    4 mars 2016 à 19:48:39

                    Après avoir utilisé la façon donnée par Nelimee :

                    #!/usr/bin/python
                    # coding: utf-8
                     
                    from astropy.io import fits
                    import numpy as np
                    import matplotlib.pyplot as plt
                    
                     
                                #########################################
                                # Fichier contenant la liste des champs #
                                #########################################
                    
                    
                    with open("liste_champs.txt", "r") as f :
                    	
                    	fichier_entier = f.read()
                    	files = fichier_entier.split("\n")
                    
                    for fichier in files :
                    	
                    	with open(fichier, 'r') :
                     
                    		reading = fits.open(fichier)          # Ouverture du fichier à l'aide d'astropy
                     
                    		tbdata = reading[1].data               # Lecture des données fits
                    
                    
                      	    #######################################################
                                # Application du tri en fonction de divers paramètres #
                                #######################################################
                     
                    		mask1 = tbdata['CHI'] < 1.0 		# Création d'un masque pour la condition CHI
                    		tbdata_temp1 = tbdata[mask1]
                    	
                    		print "Tri effectué sur CHI"
                    
                    		mask2 = tbdata_temp1['PROB'] > 0.01	# Création d'un second masque sur la condition PROB
                    		tbdata_temp2 = tbdata_temp1[mask2]
                    
                    		print "Tri effectué sur PROB"
                    	
                    		mask3 = tbdata_temp2['SHARP'] > -0.4 	# Création d'un 3e masque sur la condition SHARP (1/2)
                    		tbdata_temp3 = tbdata_temp2[mask3]
                    
                    		mask4 = tbdata_temp3['SHARP'] < 0.1	# Création d'un 4e masque sur la condition SHARP (2/2)
                    		tbdata_final = tbdata_temp3[mask4]
                    
                    		print "Création de la nouvelle table finale"
                    	#print tbdata_final			# Affichage de la table après toutes les conditions
                    
                    
                    		plt.plot(tbdata_final['G'] - tbdata_final['R'], tbdata_final['G'], '.')
                    		plt.title('Diagramme Couleur-Magnitude')
                    		plt.xlabel('(g-r)')
                    		plt.ylabel('g')
                    		plt.xlim(-2,2)
                    		plt.ylim(15,26)
                    		plt.gca().invert_yaxis()
                    		plt.show()
                    
                    		print "Création du Diagramme"
                    	
                    		hdu = fits.BinTableHDU(data=tbdata_final)
                    		hdu.writeto('{}_{}'.format(fichier, 'traité'))		# Ecriture du résultat obtenu dans un nouveau fichier fits
                    
                    		print "Ecriture du nouveau fichier traité"
                    
                                #################################################
                                # Détermination des valeurs extremales du champ #
                                #################################################
                     
                    	RA_max = np.max(tbdata['RA'])
                    	RA_min = np.min(tbdata['RA'])
                    	print "RA_max vaut :     " + str(RA_max)
                    	print "RA_min vaut :     " + str(RA_min)
                     
                    	DEC_max = np.max(tbdata['DEC'])
                    	DEC_min = np.min(tbdata['DEC'])
                    	print "DEC_max vaut :   " + str(DEC_max)
                    	print "DEC_min vaut :   " + str(DEC_min)
                     
                                #########################################
                                # Calcul de la valeur centrale du champ #
                                #########################################
                     
                    	RA_central = (RA_max + RA_min)/2.
                    	DEC_central = (DEC_max + DEC_min)/2.
                     
                    	print "RA_central vaut : " + str(RA_central)
                    	print "DEC_central vaut : " + str(DEC_central)

                    Cela fonctionne, il prend mon premier fichier, a fait le traitement, puis le second ...
                    Plus qu'à voir comment enregistrer l'image à chaque fois qu'il l'a plot !

                    Merci à vous :)

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Rien ne se crée, rien ne se perd, tout se transforme ...
                      4 mars 2016 à 23:31:09

                      Si je mets un :
                      fig = plt.figure()
                      plt.savefig()
                      Je n'arrive pas, sans faire d'erreurs, à ce qu'il m'enregistre mon graph avec un nom faisant référence au fichier qui est entrain d'être lu.
                      Je sais que je dois faire comme à la ligne 64, mais impossible, en regardant la syntaxe de plt.savefig() de le trouver
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Rien ne se crée, rien ne se perd, tout se transforme ...

                      Ouvrir une liste de fichiers avec Python

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown