2009-02-06 7 views
0

J'essaie de créer un programme qui vérifie un tableau pour s'assurer qu'il y a quatre dossiers avec des noms partiellement identiques.Liste/tableaux - Vérifier les dates

Alors

Pour une date comme 0103 (3 janvier), il devrait y avoir 0103-1, 0103-2, 0103-3 et 0103-4. Les autres dossiers sont comme 0107-1, 0107-2, 0107-3, 0107-4. Comment vais-je faire cela? J'ai pensé à utiliser glob.glob (python) et joker pour m'assurer qu'il n'y a que quatre matchs ... mais je n'aime pas cette méthode.

Des suggestions?

+0

"un tableau"? Voulez-vous dire une liste? Un répertoire? –

+0

Pourquoi n'aimez-vous pas glob.glob? – sykora

Répondre

3
import os 

def myfunc(date, num): 
    for x in range(1, num+1): 
     filename = str(date) + "-" + str(x) 
     if os.path.exists(filename): 
      print(filename+" exists") 
     else: 
      print(filename+" does not exist") 

myfunc('0102', 3); 

0102-1 n'existe pas

0102-2 n'existe pas

0102-3 n'existe pas

+0

s/.exists/.isdir / – jfs

0

Voici une façon naïve pour trouver la plus grande sous-chaîne principale commune donnée un tableau de chaînes:

>>> arr = ['0102-1', '0102-2', '0102-3'] 
>>> for i in reversed(range(len(arr[0]))): 
...  for s in arr: 
...   if not s.startswith(arr[0][:i+1]): 
...   break 
...  else: 
...   break 
... else: 
...  if i == 0: i = -1 
... 
>>> arr[0][:i+1] 
'0102-' 
>>> i 
4 
Questions connexes