55 votes

Utilisez un caractère générique avec os.path.isfile()

Je voudrais vérifier s'il y a des fichiers .rar dans un répertoire. Il n'a pas besoin d'être récursif.

L'utilisation de caractères génériques avec os.path.isfile() était ma meilleure hypothèse, mais cela ne fonctionne pas. Que puis-je faire alors ?

98voto

user225312 Points 22699

glob est ce dont vous avez besoin.

 >>> import glob
>>> glob.glob('*.rar')   # all rar files within the directory, in this case the current working one

os.path.isfile() renvoie True si un chemin est un fichier normal existant. Cela est donc utilisé pour vérifier si un fichier existe déjà et ne prend pas en charge les caractères génériques. glob fait.

10voto

cldy Points 2184
import os
[x for x in os.listdir("your_directory") if len(x) >= 4 and  x[-4:] == ".rar"]

6voto

pyfunc Points 31088

Les caractères génériques sont développés par le shell et vous ne pouvez donc pas les utiliser avec os.path.isfile()

Si vous souhaitez utiliser des caractères génériques, vous pouvez utiliser popen with shell = True ou os.system()

 >>> import os
>>> os.system('ls')
aliases.sh          
default_bashprofile     networkhelpers          projecthelper.old           pythonhelpers           virtualenvwrapper_bashrc
0
>>> os.system('ls *.old')
projecthelper.old
0

Vous pouvez également obtenir le même effet avec le module glob.

 >>> import glob
>>> glob.glob('*.old')
['projecthelper.old']
>>> 

2voto

Tchotchke Points 1507

Si vous vous souciez simplement de savoir si au moins un fichier existe et que vous ne voulez pas une liste des fichiers :

 import glob
import os

def check_for_files(filepath):
    for filepath_object in glob.glob(filepath):
        if os.path.isfile(filepath_object):
            return True

    return False

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X