2017-12-11 5 views
-5

Beispieldatei jeden Unterordner zu finden:Python, möchte ich auf einen Ordner

>>> path = ('datasets/subfolder 1/') 
>>> pth = os.listdir(path) 
>>> file = pth 
>>> while True: 
...  for file in pth: 
...   print(file) 
...  break 
>>> 1.jpg, 2.jpg 

Ordner

  • Unterordner 1
  • Unterordner 2
  • Unterordner 3

I möchte Datei in Unterordner 1 neben Unterordner 2 und Unterf finden ältere 3 in Python und ich brauche vollständigen Pfad zu bekommen:

/home/pi/Desktop/datasets/subfolder 1/file jpg 
/home/pi/Desktop/datasets/subfolder 2/file jpg 
/home/pi/Desktop/datasets/subfolder 3/file jpg 

Danke.

+2

Bitte geben Sie uns Codebeispiele von dem, was Sie bisher versucht haben. So können wir Ihnen effektiver helfen. – Ivonet

+2

Das ist nicht genug Detail. Bitte editieren und umformatieren. –

+0

path = ('Datensätze/data /') pth = os.listdir (Pfad) file = p-ten während True: für Datei in pth: print (Datei) Pause –

Antwort

0

Der einfachste Weg, vorausgesetzt, Sie wollen nicht gehen weiter unten im Baum ist:

import os 

filepaths = [] 
iterdir = os.scandir(path_of_target_dir) 
for entry in iterdir: 
    filepaths.append(entry.path) 

Update: ist eine Liste Verständnis macht schneller und kompakter: (dringend empfohlen)

import os 

iterdir = os.scandir(path_of_target_dir) 
filepaths = [entry.path for entry in iterdir] 

Wenn Sie durch die Erweiterung filtern:

import os 

iterdir = os.scandir(path_of_target_dir) 
filepaths = [entry.path for entry in iterdir if entry.name.split('.')[-1] =='jpg'] # if you only want jpg files. 

Wenn Sie durch mehrere Erweiterungen filtern:

import os 

iterdir = os.scandir(path_of_target_dir) 
filepaths = [entry.path for entry in iterdir if entry.name.split('.')[-1] in {'jpg', 'docx'}] # if you only want jpg and docx files. 

... oder es leichter zu lesen und ändern machen und das Hinzufügen von Ausschlussfilter:

import os 

incl_ext = {'jpg', 'docx'} # set of extensions; paths to files with these extensions will be collected. 
excl_ext = {'txt', 'bmp'} # set of extensions; paths to files with these extensions will NOT be collected. 

get_ext = lambda file: file.name.split('.')[-1] # lambda function to get the file extension. 
iterdir = os.scandir(path_of_target_dir) 
filepaths = [entry.path for entry in iterdir if get_ext(entry) in incl_ext and get_ext(entry) not in excl_ext] 
print(filepaths) 

Sie es in eine Funktion machen. (Sie sollten es in eine Funktion machen).

Verwandte Themen