2017-08-29 3 views
-2

Je suis à la recherche d'un script python qui trouvera le nom exact d'un fichier existant dans le répertoire en cours d'exécution de ce script Python, qui peut être nommé de façon incrémentielle.Trouver un fichier d'un nom de fichier partiel en python

Par exemple, le fichier pourrait être: file1.dat file2.dat file3.dat ....

Nous savons donc que le nom du fichier commence par le préfixe file et nous savons qu'il se termine par le sufix .dat. Mais nous ne savons pas si ce sera file1.datfile1000.dat

donc j'ai besoin d'un script qui va vérifier dans la gamme de dire 1-1000 tous les noms de fichiers file1.dat-file1000.dat, et si elle trouve celui qui existe dans le répertoire, il renvoie un message de réussite.

+0

Jetez un oeil au module 'glob' – PRMoureu

+0

regardez ici: https://stackoverflow.com/questions/3964681/find-all-files-in-a-directory-with-extension-txt-in -python – Dadep

+0

Copie possible de [Trouver tous les fichiers dans un répertoire avec extension .txt en Python] (https://stackoverflow.com/questions/3964681/find-all-files-in-a-directory-with-extension-txt -in-python) – Dadep

Répondre

1

Essayez ceci:

for i in range(1, 1001): 
    if os.path.isfile("file{0}.dat".format(i)): 
     print("Success!") 
     break 
else: 
    print("Failure!") 
0

Essayez quelque chose comme ceci:

import os 

path = os.path.dirname(os.path.realpath(__file__)) 

for f_name in os.listdir(path): 
    if f_name.startswith('file') and f_name.endswith('.dat'): 
     print('found a match') 
+0

Ceci a la possibilité de faire correspondre des fichiers avec des noms comme 'fichier-sample.dat' ou' file.dat'. –

+0

@ZachGates Oui, c'est le cas. C'était juste destiné à être un point de départ. Je suis 100% sûr de ce que sa convention de nommage est/sera. – LeopoldVonBuschLight

0

Comme d'autres l'ont suggéré dans les commentaires, glob et d'autres options sont disponibles, cependant, je trouve personnellement listdir plus confortable.

import os 
for file in os.listdir("/DIRECTORY"): 
    if file.endswith(".dat") and prefix in file: 
     print file 
+0

Qu'est-ce que 'prefix'? Je suspecte que c'est '' file '', et si c'est le cas, vous pourriez finir par faire correspondre des fichiers comme' file-sample.dat', etc. En utilisant l'opérateur 'in', vous pourriez même faire correspondre des fichiers comme' sample-file .dat' ou 'ignore-this-file.dat'. –

1

Je recherche un regex en utilisant le module glob de Python. Voici une expression exemple:

glob.glob(r'^file(\d+)\.dat$') 

Cela correspond un nom de fichier commençant par file, suivi des chiffres, et se terminant par .dat. Pour une explication plus approfondie sur la façon dont cette regex fonctionne, vérifiez-la sur Regex101, où vous pouvez également le tester.

Remarque: Votre question n'a pas précisé, mais en prime, glob prend également en charge les recherches récursives.