Finn alle filene i en mappe
Hvordan vi kan finne en fil på datamaskinen med Python? Det er mange måte å gjøre det på, la oss starte med det første.
ved Hjelp av mac os.listdir()
Du trenger bare å importere os-modul, og du kan bruke os.listdir funksjon for å være i stand til å se alle filer i en katalog. I Python 3, hvis du ikke sette noe som argument i rund parentes, vil den gå tilbake du en liste over alle filer og mapper i gjeldende mappe., I Pyton 2 du må bruke os.listdir(«.») for å se filer i gjeldende mappe.
# First tryimport osf_list = os.listdir()
Hvis du ønsker en bestemt katalog, må du sette banen som et argument.
os.listdir("C:\\documents")
I dette eksemplet, kan du se på filene i mappen dokumenter på harddisken C:
os.listdir(): få filer i gjeldende katalog (Python 3)
Den enkleste måten å ha filen i gjeldende dir i Python 3 er dette., Det er veldig enkelt, bruke os-modulen og listdir () – funksjonen, og du vil ha filen i den dir (og eventuelle mapper som er i katalogen, men du vil ikke ha filen i en undermappe, for at du kan bruke gange, jeg vil ikke snakke om det senere).
import osarr = os.listdir()arr
Få full bane navn
Som du lagt merke til, har du ikke den fullstendige banen til filen i koden ovenfor. Hvis du trenger å ha den absolutte banen, kan du bruke en annen funksjon i os.banen modul kalt _getfullpathname, sette den filen du får fra os.listdir() som et argument., Det er andre måter å ha full vei, som vi skal se senere (jeg byttet ut, som foreslått av mexmex, _getfullpathname med abspath).
Få full bane navn på en type fil til alle undermapper med gange
jeg finner dette svært nyttig for å finne ting i mange kataloger og det hjalp meg til å finne en fil som jeg ikke husker navnet:
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(): få filer i gjeldende katalog (Python-2)
import osarr = os.listdir('.')arr# output:
for Å gå opp i katalogen treet
# method 1x = os.listdir('..')# method 2x = os.listdir('/')
få filer: os.,listdir() i en bestemt katalog (Python 2 og 3)
import osarr = os.listdir('F:\\python')arr# output:
Få filer av en bestemt underkatalog med os.listdir()
import osx = os.listdir("./content")
os.spasertur(‘.’) – gjeldende mappe
import osarr = next(os.walk('.'))arr# output:
glob modul – alle filer
import globprint(glob.glob("*"))# output:
neste(os.spasertur(‘.’)) og os.bane.bli med(‘dir’,’fil’)
neste(os.gange («F:\’) – få full bane – listen forståelse
# output#
os.walk – få full sti – alle filer i sub skuffer
x = x# output#
os.,listdir() – får bare txt-filer
arr_txt = print(arr_txt)# output:
glob – får bare txt-filer
import globx = glob.glob("*.txt")x# output:
ved Hjelp av glob for å få den fullstendige banen til filene
Hvis jeg skulle ha behov for den absolutte banen til filene som:
Annen bruk av glob
Hvis jeg vil at alle filer som er i katalogen:
x = glob.glob("*")
ved Hjelp av mac os.bane.isfile å unngå kataloger i listen*
ved Hjelp av pathlib fra (Python 3.4)
Hvis du vil bruke listen forståelse
flist =
Få alle og bare filer med os.,gange
Få bare filer med neste og gå i en mappe
import osx = next(os.walk('F://python'))print(x)################################### output:
Få bare kataloger med neste og gå i en mappe
import osnext(os.walk('F://python')) # for the current dir use ('.')# output:
**Få alle subdir navn med gange
os.scandir() fra python 3.5 på
Ex. 1: Hvor mange filer som er der i underkataloger?
I dette eksempelet, ser vi etter antall filer som er inkludert i alle mappe og dens undermapper.
Ex.2: Hvordan å kopiere alle filer fra en mappe til en annen?,
Et skript for å få orden i datamaskinen for å finne alle filer av en type (standard: pptx) og kopiere dem over i en ny mappe.
Ex.3: Hvordan å få alle filene i en txt-fil
I tilfelle du ønsker å opprette en txt-fil med alle fil-navn:
Eksempel: opprette en txt med alle filene navn i harddisken
Alt filen i C:\\ i en tekst-fil
Dette er en kortere versjon av den forrige koden. Endre mappe hvor du skal begynne å finne filer hvis du trenger å starte fra en annen posisjon., Denne koden for å generere en 50 mb på tekst-fil på datamaskinen min med noe mindre enn 500.000 linjer med filer med den fullstendige banen.
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")