alle bestanden in een map vinden
Hoe kunnen we een bestand op out computer vinden met Python? Er zijn veel manieren om het te doen, laten we beginnen met de eerste.
met behulp van os.listdir ()
je hoeft alleen maar de os module te importeren en je kunt het os gebruiken.listdir functie om al dossier in een folder te kunnen zien. In Python 3, als je niets als argument in de ronde haakjes zet, zal het je een lijst van alle bestanden en de map van de huidige map teruggeven., In Pyton 2 moet je os gebruiken.listdir (“.”) om de bestanden in de huidige map te zien.
# First tryimport osf_list = os.listdir()
Als u een bepaalde map wilt, moet u het pad als argument gebruiken.
os.listdir("C:\\documents")
In dit voorbeeld kunt u kijken naar de bestanden in de map Documenten van de harde schijf c:
os.listdir (): bestanden ophalen in huidige map (Python 3)
De eenvoudigste manier om het bestand in de huidige map in Python 3 te hebben is dit., Het is heel eenvoudig, gebruik de os module en de listdir () functie en je hebt het bestand in die dir (en eventuele mappen die in de dir staan, maar je hebt het bestand niet in de subdirectory, daarvoor kun je walk gebruiken – Ik zal er later over praten).
import osarr = os.listdir()arr
het verkrijgen van de volledige padnaam
zoals u opmerkte, heeft u niet het volledige pad van het bestand in de bovenstaande code. Als u het absolute pad moet hebben, kunt u een andere functie van het besturingssysteem gebruiken.pad module genaamd _getfullpathname, het zetten van het bestand dat je krijgt van os.listdir () als argument., Er zijn andere manieren om het volledige pad te hebben, zoals we later zullen controleren (ik verving, zoals voorgesteld door mexmex, _getfullpathname met abspath).
haal de volledige padnaam van een type bestand in alle submappen met walk
Ik vind dit erg handig om dingen in veel mappen te vinden en het hielp me een bestand te vinden waarvan ik de naam niet meer wist:
import osthisdir = os.getcwd()for r, d, f in os.walk(thisdir): for file in f: if ".docx" in file: print(os.path.join(r, file))
os.listdir(): bestanden ophalen in huidige map (Python 2)
import osarr = os.listdir('.')arr# output:
om omhoog te gaan in de mapstructuur
# method 1x = os.listdir('..')# method 2x = os.listdir('/')
bestanden ophalen: os.,listdir () in een bepaalde map (Python 2 en 3)
import osarr = os.listdir('F:\\python')arr# output:
haal bestanden van een bepaalde submap met os.listdir ()
import osx = os.listdir("./content")
os.lopen(‘.’)- current directory
import osarr = next(os.walk('.'))arr# output:
glob module-all files
import globprint(glob.glob("*"))# output:
next(os.lopen(‘.’)) en os.pad.join (‘dir’,’file’)
volgende (os.walk (‘F:\’) – haal de volledige path-list comprehension
# output#
os.walk-get full path-all files in submappen
x = x# output#
os.,listdir() – get only txt files
arr_txt = print(arr_txt)# output:
glob – get only txt files
import globx = glob.glob("*.txt")x# output:
glob gebruiken om het volledige pad van de bestanden te krijgen
als ik het absolute pad van de bestanden nodig heb:
ander gebruik van glob
als ik alles wil de bestanden in de map:
x = glob.glob("*")
met behulp van OS.pad.isfile om mappen in de lijst te vermijden*
met behulp van pathlib from (Python 3.4)
Als u lijstbegrip wilt gebruiken
flist =
haal alle en alleen bestanden op met os.,walk
alleen bestanden ophalen met Volgende en in een map lopen
import osx = next(os.walk('F://python'))print(x)################################### output:
alleen mappen ophalen met Volgende en in een map lopen
import osnext(os.walk('F://python')) # for the current dir use ('.')# output:
**alle subdir-namen ophalen met walk
os.scandir () van python 3.5 op
Ex. 1: Hoeveel bestanden zijn er in de submappen?
in dit voorbeeld zoeken we naar het aantal bestanden dat in alle directory ’s en subdirectory’ s is opgenomen.
Ex.2: Hoe kopieer ik alle bestanden van een map naar een andere?,
een script om op uw computer alle bestanden van een bepaald type te vinden (Standaard: pptx) en ze in een nieuwe map te kopiëren.
Ex.3: Hoe krijg je alle bestanden in een txt-bestand
als je een txt-bestand wilt maken met alle bestandsnamen:
voorbeeld: Maak een txt Met alle bestandsnamen op je harde schijf
alle bestanden van C:\ \ in één tekstbestand
Dit is een kortere versie van de vorige code. Wijzig de map waar te beginnen met het vinden van de bestanden als je nodig hebt om te beginnen vanaf een andere positie., Deze code genereert een 50 mb tekstbestand op mijn computer met iets minder dan 500.000 regels met bestanden met het volledige pad.
import oswith open("file.txt", "w", encoding="utf-8") as filewrite: for r, d, f in os.walk("C:\\"): for file in f: filewrite.write(f"{r + file}\n")