ohne

2016-06-06 12 views
0
Erweiterung nur bestimmte Dateinamen zurück

So von einem früheren Post, die ich fragte ich den folgenden Code gefunden arbeiten:ohne

b = os.walk('C:\\Users\\USER\\Desktop\\FOLDER') 
f = [] 
for(dirpath, dirnames, filenames) in b: 
    f.extend(os.path.splitext(name)[0] for name in filenames) 
    break 

Aber jetzt würde ich diese Liste gerne nur eine bestimmte Art von Datei zurückzukehren, wie wie nur die Dateien, die .JPEG oder .GIF sind (immer noch ohne Erweiterung).

Ich habe bereits versucht fnmatch zu verwenden, aber es hat nicht funktioniert ..

Nach Kommentare ich den Code geändert:

b = os.walk('C:\\Users\\USER\\Desktop\\FOLDER') 
os.listdir('C:\\Users\\USER\\Desktop\\FOLDER') 
f = [] 
for(dirpath, dirnames, filenames) in b: 
    f.extend(os.path.splitext(name)[0] for name in filenames if name.lower().endswith((".jpeg", ".gif"))) 

def save_to_file(text): 
    for name in f: 
     with open('C:\\Users\\USER\\Desktop\\FOLDER\\test.txt', mode='wt', encoding='utf-8') as myfile: 
      myfile.write('\n'.join(text)) 
      myfile.write('\n') 

save_to_file(f) 
+0

Put-if-Anweisung in diesem Generator Ausdruck? – YOU

+0

Haben Sie versucht, die Python-Dokumente für das Modul "os" und die grundlegenden integrierten Typen und ihre Methoden zu lesen? –

Antwort

1

Sie str.endswith vorbei ein Tupel von Erweiterungen verwenden können Sie haben eine Pause in Ihrer for-Schleife als das bedeutet, dass Sie Schleife über ein Verzeichnis, das Sie mit os.listdir

+0

Danke das hat perfekt funktioniert! – Naj

0

Wenn ich Sie richtig verstehe, wollen Sie jede Datei überprüfen benennen und nur einen bestimmten Dateityp ohne die Erweiterung zurückgeben? Da Sie auf Windows- arbeiten, ich denke, Sie tun können:

f.extend((os.path.splitext(name)[0] for name in filenames if name.lower().endswith((".jpeg", ".gif"))) 

Ich bin nicht sicher, warum:

for filename in files: 
    try: 
     ext = filename.split('.') 
     if ext[1].lower() == 'gif' or ext[1].lower() == 'jpeg': 
      print ext[0] 
    except IndexError: 
     continue 
+0

Dies wird einen 'IndexError' für jede Datei ohne eine Erweiterung werfen – Keatinge

+0

Sie haben Recht. Ich gab keine vollständige Lösung, nur eine Idee. Wie auch immer, ich habe den Kommentar aktualisiert. Vielen Dank. – Maorg

+0

das repariert es überhaupt nicht. Der Versuch muss um den Teil herum sein, auf den du Zugriff hast, ext [1] ' – Keatinge

1
tun könnten

nächste:

file_name = [] 
for res in result: 
    file_name.append(res.split('.')[0] 
print(file_name)