hitta alla filer i en katalog

hur kan vi hitta en fil på datorn med Python? Det finns många sätt att göra det, låt oss börja med den första.

använda os.listdir ()

du behöver bara importera os-modulen och du kan använda operativsystemet.listdir funktion för att kunna se alla filen i en katalog. I Python 3, Om du inte lägger något som argument i den runda parentesen, kommer det att ge dig en lista över alla filer och mappar i den aktuella katalogen., I Pyton 2 måste du använda os.listdir(”.”) för att se filerna i den aktuella katalogen.

# First tryimport osf_list = os.listdir()

om du vill ha en viss katalog måste du lägga sökvägen som ett argument.

os.listdir("C:\\documents")

i det här exemplet kan du titta på filerna i mappen Dokument på hårddisken C:

os.listdir (): hämta filer i nuvarande Dir (Python 3)

det enklaste sättet att få filen i den aktuella dir i Python 3 är detta., Det är väldigt enkelt, använd os-modulen och listdir () – funktionen och du har filen i den dir (och eventuella mappar som finns i dir, men du kommer inte att ha filen i underkatalogen, för det kan du använda walk – jag kommer att prata om det senare).

import osarr = os.listdir()arr

få hela sökvägen

som du märkte har du inte den fullständiga sökvägen till filen i koden ovan. Om du behöver ha den absoluta vägen kan du använda en annan funktion av operativsystemet.path modul som heter _getfullpathname, sätta filen som du får från os.listdir() som ett argument., Det finns andra sätt att ha den fullständiga sökvägen, som vi kommer att kontrollera senare(Jag ersatte, som föreslagits av mexmex, _getfullpathname med abspath).

få hela sökvägen namn på en typ av fil i alla underkataloger med walk

Jag tycker att detta är mycket användbart för att hitta saker i många kataloger och det hjälpte mig att hitta en fil som jag inte minns namnet:

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 (): hämta filer i nuvarande Dir (Python 2)

import osarr = os.listdir('.')arr# output: 

för att gå upp i katalogträdet

# method 1x = os.listdir('..')# method 2x = os.listdir('/')

hämta filer: os.,listdir() i en viss katalog (Python 2 och 3)

import osarr = os.listdir('F:\\python')arr# output: 

hämta filer från en viss underkatalog med os.listdir()

import osx = os.listdir("./content")

os.promenad(‘.’) – aktuell katalog

import osarr = next(os.walk('.'))arr# output: 

glob module – alla filer

import globprint(glob.glob("*"))# output: 

nästa(os.promenad(‘.’) och os.väg.gå med (’dir’,’file’)

nästa (os.walk (’f:\’) – få hela sökvägen-lista förståelse

# output# 

os.promenad – få fullständig sökväg – alla filer i sub dirs

x = x# output# 

os.,listdir() – få bara txt – filer

arr_txt = print(arr_txt)# output: 

glob-få bara txt-filer

import globx = glob.glob("*.txt")x# output: 

använda glob för att få hela sökvägen till filerna

om jag skulle behöva den absoluta sökvägen till filerna:

annan användning av glob

om jag vill ha alla filer i katalogen:

x = glob.glob("*")

använda OS.väg.isfile för att undvika kataloger i listan *

använda pathlib från (Python 3.4)

Om du vill använda listförståelse

flist = 

få alla och bara filer med os.,walk

få bara filer med nästa och gå i en katalog

import osx = next(os.walk('F://python'))print(x)################################### output: 

få bara kataloger med nästa och gå i en katalog

import osnext(os.walk('F://python')) # for the current dir use ('.')# output: 

*få alla subdir namn med walk

os.scandir () från python 3.5 på

Ex. Hur många filer finns det i underkatalogerna?

i det här exemplet letar vi efter antalet filer som ingår i hela katalogen och dess underkataloger.

Ex.2: Så här kopierar du alla filer från en dir till en annan?,

ett skript för att göra ordning i datorn att hitta alla filer av en typ (standard: pptx) och kopiera dem i en ny mapp.

Ex.3: Så här får du alla filer i en txt-fil

om du vill skapa en txt-fil med alla filnamn:

exempel: skapa en txt med alla filnamn i din hårddisk

alla filer i C:\\ i en textfil

det här är en kortare version av den tidigare koden. Ändra mappen var du ska börja hitta filerna om du behöver starta från en annan position., Denna kod genererar en 50 mb på textfil på min dator med något mindre än 500.000 rader med filer med hela sökvägen.

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")

Letar efter en typ av fil i alla hårddiskar med os.promenad

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *