2017-08-23 1 views
1

Je fais une application PyQT5 qui doit sélectionner le dossier donné, et liste tous les fichiers et répertoires qui s'y trouvent.Comment lire n fichiers du répertoire en Python?

Pour récupérer le chemin, j'utiliser la méthode simple qui ressemble à:

def open_path(): 
    dialog = QFileDialog() 
    folder_path = dialog.getExistingDirectory(None, "Select Folder") 
    return folder_path 

EDIT

Voilà comment je vais chercher les racines, dirs et fichiers

import os 

# this is where I have my open_path() method defined, so I don't write it again 

path = str(open_path()) 
roots = next(os.walkpath(path))[0] 
dirs = next(os.walkpath(path))[1] 
files = next(os.walkpath(path))[2] 

J'ai un dossier qui contient environ 11000 fichiers. J'utilise QFileDialog pour récupérer le dossier, et le diviser en 3 listes (racines, répertoires, fichiers), et utiliser QDir pour l'afficher.

En raison de sa taille, je veux limiter l'affichage QDir seulement 1000 premiers fichiers, avec la possibilité de charger plus, après avoir atteint 1000.

Est-ce possible de faire et comment?

Je n'ai pas trouvé de documentation ou d'exemple sur la façon d'implémenter ce type de filtre.

Je cherchais cette info partout sur le web, mais seulement trouvé cette solution ->How to read first n-th files from directory (pleaso NOT a "head -n solution")? qui implique le script bash?

Je veux éviter d'utiliser Popen et PIPE si possible.

Toute aide ou conseil est la bienvenue.

Merci.

+1

Cela n'a pas de sens: la fonction 'getExistingDirectory' n'affiche que * répertoires *, pas les fichiers. Et qu'est-ce que le code 'os.walkpath' a à faire avec l'affichage des fichiers dans' QFileDialog'? – ekhumoro

+0

@ekhumoro désolé. C'était une faute de frappe. J'ai mis à jour la question. Fondamentalement, je veux utiliser QFileDialog pour récupérer le chemin, diviser le chemin en 3 listes, et utiliser QDir pour afficher les fichiers seulement. – mutantkeyboard

+1

Cela n'a toujours aucun sens: vous ne pouvez rien afficher dans un 'QDir'. Au lieu de tenter de décrire les choses, s'il vous plaît poster un vrai code de travail qui démontre le problème. 11000 éléments n'est pas un nombre particulièrement important à afficher dans l'une des classes d'affichage de Qt. – ekhumoro

Répondre

0
parent_list = os.listdir("Here goes the path for directory") 
    count =0 
    for child in parent_list: 
    if count < 1000: 
     print(child) 
    else 
     break 
    count = count+1 

Ici parent_list contient tout le fichier dans le répertoire donné, et vous pouvez accéder aux 1000 premiers fichiers de la liste en utilisant loop. child est le fichier dans le répertoire