Najít všechny soubory v adresáři
Jak můžeme najít soubor na počítači s Python? Existuje spousta způsobů, jak to udělat, začněme s prvním.
pomocí os.listdir ()
stačí importovat modul os a můžete použít operační systém.listdir funkce, aby bylo možné vidět celý soubor v adresáři. V Pythonu 3, pokud do kulaté závorky nedáte nic jako argument, vrátí vám seznam všech souborů a složky aktuálního adresáře., V Pyton 2 musíte použít os.listdir(„.“) Chcete-li zobrazit soubory v aktuálním adresáři.
# First tryimport osf_list = os.listdir()
Pokud chcete konkrétní adresář, musíte dát cestu jako argument.
os.listdir("C:\\documents")
v tomto příkladu se můžete podívat na soubory ve složce Dokumenty pevného disku C:
os.listdir (): získejte soubory v aktuálním dir (Python 3)
nejjednodušší způsob, jak mít soubor v aktuálním dir v Pythonu 3, je toto., Je to opravdu jednoduché, použijte os modul a listdir() funkce a budete mít soubor v tomto adresáři (a případné složky, které jsou v dir, ale nebudete mít soubor v podadresáři, pro které můžete použít procházka – budu o tom mluvit později).
import osarr = os.listdir()arr
získání názvu celé cesty
jak jste si všimli, nemáte úplnou cestu k souboru ve výše uvedeném kódu. Pokud potřebujete mít absolutní cestu, můžete použít jinou funkci operačního systému.path modul s názvem _getfullpathname, uvedení souboru, který dostanete z os.listdir () jako argument., Existují i jiné způsoby, jak mít plnou cestu, jak to zkontrolujeme později (nahradil jsem, jak navrhl mexmex, _getfullpathname s abspath).
Získat plnou cestu, název a typ souboru, do všech podadresářů s walk
já jsem najít to velmi užitečné najít věci, v mnoha adresářích a to mi pomohlo najít soubor, o kterém jsem si nepamatoval název:
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(): ten souborů v aktuálním adresáři dir (Python 2)
import osarr = os.listdir('.')arr# output:
jít nahoru v adresářové struktuře
# method 1x = os.listdir('..')# method 2x = os.listdir('/')
získat soubory: os.,listdir() v konkrétním adresáři (Python 2 a 3)
import osarr = os.listdir('F:\\python')arr# output:
Získat soubory určitého podadresáře s os.listdir ()
import osx = os.listdir("./content")
os.chůze(‘.‘) – aktuální adresář
import osarr = next(os.walk('.'))arr# output:
modul glob – všechny soubory
import globprint(glob.glob("*"))# output:
další(os.chůze(‘.‘)) a os.cesta.připojte se (‚dir‘,’file‘)
další (os.procházka (‚F:\‘) – Získejte plnou cestu – seznam porozumění
# output#
os.walk-get full path-všechny soubory v subdirs
x = x# output#
os.,listdir() – získat pouze soubory txt
arr_txt = print(arr_txt)# output:
glob – dostat pouze txt soubory
import globx = glob.glob("*.txt")x# output:
Pomocí glob získat úplnou cestu k souborům,
Pokud bych měl potřebovat absolutní cestu k souborům:
Další použití glob
Když chci všechny soubory v adresáři:
x = glob.glob("*")
Použití os.cesta.isfile, aby se zabránilo adresářů v seznamu*
Pomocí pathlib z (Python 3.4)
Pokud chcete použít seznam s porozuměním
flist =
Získat všechny a pouze soubory s os.,chůze
Získat pouze soubory s další a chodit v adresáři
import osx = next(os.walk('F://python'))print(x)################################### output:
Získat pouze adresáře s další a chodit v adresáři
import osnext(os.walk('F://python')) # for the current dir use ('.')# output:
**Získejte všechny podadresar jména s walk
os.scandir () z Pythonu 3.5 na
Ex. 1: kolik souborů je v podadresářích?
v tomto příkladu hledáme počet souborů, které jsou obsaženy ve všech adresářích a podadresářích.
Ex.2: Jak zkopírovat všechny soubory z dir do jiného?,
skript pro objednání v počítači nalezení všech souborů typu (výchozí: pptx) a jejich kopírování do nové složky.
Ex.3: Jak se dostat všechny soubory v txt souboru
V případě, že chcete vytvořit txt soubor s názvy souborů:
Příklad: vytvoření txt se všemi názvy souborů na pevném disku
soubor C:\\ v jednom textovém souboru
Toto je kratší verze předchozí kód. Změňte složku, kde chcete začít hledat soubory, pokud potřebujete začít z jiné pozice., Tento kód vygeneruje 50 mb na textovém souboru v počítači s něčím menším než 500.000 řádků se soubory s úplnou cestou.
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")