Wie kann ich alle Dateien in einem Verzeichnis mit der Erweiterung .txt
in Python?
Antworten
Zu viele Anzeigen?
mrgloom
Punkte
17288
praba230890
Punkte
2074
yucer
Punkte
3621
Verwenden Sie fnmatch: https://docs.python.org/2/library/fnmatch.html
import fnmatch
import os
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.txt'):
print file
Martin Thoma
Punkte
105621
Eine copy-pastable Lösung ähnlich der von ghostdog:
def get_all_filepaths(root_path, ext):
"""
Search all files which have a given extension within root_path.
This ignores the case of the extension and searches subdirectories, too.
Parameters
----------
root_path : str
ext : str
Returns
-------
list of str
Examples
--------
>>> get_all_filepaths('/run', '.lock')
['/run/unattended-upgrades.lock',
'/run/mlocate.daily.lock',
'/run/xtables.lock',
'/run/mysqld/mysqld.sock.lock',
'/run/postgresql/.s.PGSQL.5432.lock',
'/run/network/.ifstate.lock',
'/run/lock/asound.state.lock']
"""
import os
all_files = []
for root, dirs, files in os.walk(root_path):
for filename in files:
if filename.lower().endswith(ext):
all_files.append(os.path.join(root, filename))
return all_files
Sie können auch Folgendes verwenden yield
um einen Generator zu erstellen und so zu vermeiden, dass die vollständige Liste zusammengestellt wird:
def get_all_filepaths(root_path, ext):
import os
for root, dirs, files in os.walk(root_path):
for filename in files:
if filename.lower().endswith(ext):
yield os.path.join(root, filename)
Nicolaesse
Punkte
2169
Ich empfehle Ihnen die Verwendung von fnmatch und die obere Methode. Auf diese Weise können Sie eine der folgenden Möglichkeiten finden:
- Name. txt ;
- Name. TXT ;
- Name. Txt
.
import fnmatch
import os
for file in os.listdir("/Users/Johnny/Desktop/MyTXTfolder"):
if fnmatch.fnmatch(file.upper(), '*.TXT'):
print(file)