Znajdź wszystkie pliki w katalogu
Jak możemy znaleźć plik na komputerze z Pythonem? Istnieje wiele sposobów, aby to zrobić, zacznijmy od pierwszego.
za pomocą systemu operacyjnego.listdir ()
wystarczy zaimportować moduł systemu operacyjnego i można z niego korzystać.funkcja listdir, aby móc zobaczyć wszystkie pliki w katalogu. W Pythonie 3, Jeśli nie umieścisz niczego jako argumentu w nawiasie okrągłym, zwróci ci to listę wszystkich plików i folderów bieżącego katalogu., W Pyton 2 musisz użyć os.listdir(„.”), aby zobaczyć pliki w bieżącym katalogu.
# First tryimport osf_list = os.listdir()
Jeśli chcesz mieć konkretny katalog, musisz podać ścieżkę jako argument.
os.listdir("C:\\documents")
w tym przykładzie możesz przejrzeć pliki w folderze Dokumenty dysku twardego C:
os.listdir (): get files in current dir (Python 3)
najprostszym sposobem, aby mieć plik w bieżącym katalogu w Pythonie 3 jest to., To naprawdę proste, użyj modułu systemu operacyjnego i funkcji listdir (), a będziesz miał plik w tym katalogu (i ewentualnie foldery, które są w katalogu, ale nie będziesz miał pliku w podkatalogu, do tego możesz użyć walk – o tym opowiem później).
import osarr = os.listdir()arr
uzyskanie pełnej nazwy ścieżki
jak zauważyłeś, nie masz pełnej ścieżki do pliku w powyższym kodzie. Jeśli potrzebujesz ścieżki bezwzględnej, możesz użyć innej funkcji systemu operacyjnego.moduł path o nazwie _getfullpathname, umieszczający plik, który otrzymujesz z systemu operacyjnego.listdir () jako argument., Są inne sposoby, aby mieć pełną ścieżkę, jak sprawdzimy później(zastąpiłem, zgodnie z sugestią mexmex, _getfullpathname z abspath).
Get the full path name of a type of file into all subdirectors with walk
I find this very useful to find stuff in many directory and it helped me finding a file about which I didn ' t remember the name:
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(): pobranie plików w bieżącym katalogu (Python 2)
import osarr = os.listdir('.')arr# output:
aby przejść do góry w drzewie katalogów
# method 1x = os.listdir('..')# method 2x = os.listdir('/')
pobierz pliki: os.,listdir () w określonym katalogu (Python 2 i 3)
import osarr = os.listdir('F:\\python')arr# output:
pobiera pliki określonego podkatalogu z systemem operacyjnym.listdir ()
import osx = os.listdir("./content")
os.spacer („.') – bieżący katalog
import osarr = next(os.walk('.'))arr# output:
moduł glob – wszystkie pliki
import globprint(glob.glob("*"))# output:
next(os.spacer („.”)) i os./ align = „left” / join (’dir',’file')
next(os.walk (’F:\') – get the full path – list comprehension
os.walk-get full path-wszystkie pliki w sub dirs
x = x# output#
os.,listdir() – pobiera tylko pliki txt
arr_txt = print(arr_txt)# output:
glob – pobiera tylko pliki TXT
import globx = glob.glob("*.txt")x# output:
używając glob aby uzyskać pełną ścieżkę plików
Jeśli powinienem potrzebować bezwzględnej ścieżki plików:
inne użycie glob
Jeśli chcę wszystkie pliki w katalogu:
x = glob.glob("*")
używając systemu operacyjnego./ align = „left” / isfile, aby uniknąć katalogów na liście *
używając pathlib from (Python 3.4)
Jeśli chcesz używać rozumienia list
flist =
Pobieraj wszystkie i tylko pliki z systemem operacyjnym.,walk
Get only files with next and walk in a directory
import osx = next(os.walk('F://python'))print(x)################################### output:
Get only directory with next and walk in a directory
import osnext(os.walk('F://python')) # for the current dir use ('.')# output:
**Get all the subdir names with walk
os.scandir () z Pythona 3.5 na
Ex. 1: Ile plików jest w podkatalogach?
w tym przykładzie szukamy liczby plików, które znajdują się we wszystkich katalogach i jego podkatalogach.
wew.2: Jak skopiować wszystkie pliki z katalogu do innego?,
skrypt do porządkowania w komputerze odnalezienia wszystkich plików danego typu (domyślnie: pptx) i skopiowania ich do nowego folderu.
wew.3: Jak uzyskać wszystkie pliki w pliku txt
w przypadku, gdy chcesz utworzyć plik txt ze wszystkimi nazwami plików:
przykład: utwórz plik txt ze wszystkimi nazwami plików na dysku twardym
cały plik C:\ w jednym pliku tekstowym
jest to krótsza wersja poprzedniego kodu. Zmień folder, w którym chcesz rozpocząć wyszukiwanie plików, jeśli chcesz zacząć od innej pozycji., Ten kod generuje 50 mb na pliku tekstowym na moim komputerze z czymś mniej niż 500.000 linii z plikami z pełną ścieżką.
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")