Masalah yang sama: daftar folder dan drive
Di artikel terakhir, kami menggunakan fungsi rekursif kurang dari 10 baris untuk memecahkan masalah pemindaian folder dan memberi peringkat file dengan mengubah tanggal dan ukuran.
Sekarang saya akan meningkatkan standar dan menunjukkan kepada Anda bagaimana Anda bisa melakukan yang lebih baik.
Pathlib
?
:
path_file = os.sep.join([path_dir, filename])
, , «+» .
, , , .
path_dir: str = r"C:/Users/sselt/Documents/blog_demo/" # abschließender Trenner
filename: str = "some_file"
path_file = os.sep.join([path_dir, filename])
# C:/Users/sselt/Documents/blog_demo/\some_file
, , . , , .
Python 3.4 — pathlib
. os - .
, :
import os
path = "C:/Users/sselt/Documents/blog_demo/"
os.path.isdir(path)
os.path.isfile(path)
os.path.getsize(path)
:
from pathlib import Path
path: Path = Path("C:/Users/sselt/Documents/blog_demo/")
path.is_dir()
path.is_file()
path.stat().st_size
. ?
-
-, , . , path
, .
:
filename: Path = Path("some_file.txt")
path: Path = Path("C:/Users/sselt/Documents/blog_demo")
print( path / filename )
# C:\Users\sselt\Documents\blog_demo\some_file.txt
. path
, .
path
:
filename: Path = Path("some_file.txt")
# hier path mit überflüssigem Trenner am Schluss
path: Path = Path("C:/Users/sselt/Documents/blog_demo/")
# hier path mit doppeltem Trenner
path: Path = Path("C:/Users/sselt/Documents/blog_demo//")
# hier path völlig durcheinander
path: Path = Path("C:\\Users/sselt\\Documents/blog_demo") # hier ein wilder Mix
# alle Varianten führen zum selben Ergebnis
print(path/filename)
# C:\Users\sselt\Documents\blog_demo\some_file.txt
, . . generic path
, Windows WindowsPath
, Linux PosixPath
.
, , . str(Path)
.
os.walk
os.listdir
, os.path.isdir
.
os.walk
. , , . . , .
os.walk Pathlib
, , , , :
filesurvey = []
for row in os.walk(path): # row beinhaltet jeweils einen Ordnerinhalt
for filename in row[2]: # row[2] ist ein tupel aus Dateinamen
full_path: Path = Path(row[0]) / Path(filename) # row[0] ist der Ordnerpfad
filesurvey.append([path, filename, full_path.stat().st_mtime, full_path.stat().st_size])
, . !
, , ? , , Python? "callback", "iterator" "lambda". — !