Saya perlu mengulangi semua .asm
file di dalam direktori yang diberikan dan melakukan beberapa tindakan pada mereka.
Bagaimana ini bisa dilakukan dengan cara yang efisien?
Jawaban asli:
import os
for filename in os.listdir(directory):
if filename.endswith(".asm") or filename.endswith(".py"):
# print(os.path.join(directory, filename))
continue
else:
continue
Python versi 3.6 dari jawaban di atas, menggunakan os
- dengan asumsi bahwa Anda memiliki jalur direktori sebagai str
objek dalam variabel yang disebut directory_in_str
:
import os
directory = os.fsencode(directory_in_str)
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith(".asm") or filename.endswith(".py"):
# print(os.path.join(directory, filename))
continue
else:
continue
Atau secara rekursif, menggunakan pathlib
:
from pathlib import Path
pathlist = Path(directory_in_str).glob('**/*.asm')
for path in pathlist:
# because path is object not string
path_in_str = str(path)
# print(path_in_str)
directory = os.fsencode(directory_in_str) for file in os.listdir(directory): filename = os.fsdecode(file) if filename.endswith(".asm") or filename.endswith(".py"): # print(os.path.join(directory, filename)) continue else: continue
print(os.path.join(directory, filename))
perlu diubah untukprint(os.path.join(directory_in_str, filename))
membuatnya bekerja di python 3.6for entry in os.scandir(path): print(entry.path)
if filename.endswith((".asm", ".py")):
keif filename.endswith(".asm") or filename.endswith(".py"):
Ini akan beralih ke semua file turunan, bukan hanya anak-anak langsung dari direktori:
sumber
Anda dapat mencoba menggunakan modul glob :
dan karena Python 3.5 Anda dapat mencari subdirektori juga:
Dari dokumen:
sumber
Sejak Python 3.5, banyak hal lebih mudah dengan os.scandir ( )
sumber
entry
adalah posix.DirEntry jenis dengan banyak metode yang berguna sepertientry.is_dir()
,is_file()
,is_symlink()
Python 3.4 dan yang lebih baru menawarkan pathlib di pustaka standar. Anda bisa melakukannya:
Atau jika Anda tidak suka daftar pemahaman:
Path
objek dapat dengan mudah dikonversi menjadi string.sumber
Inilah cara saya mengulangi file dengan Python:
TIDAK ADA JAMINAN TEKNIK INI PESANAN APA PUN
Yup, super tidak terduga. Perhatikan bahwa saya mengurutkan nama file, yang penting jika urutan file penting, yaitu untuk bingkai video atau pengumpulan data tergantung waktu. Pastikan untuk menempatkan indeks di nama file Anda!
sumber
from pkg_resources import parse_version
danfilenames.sort(key=parse_version)
berhasil.Anda dapat menggunakan glob untuk merujuk direktori dan daftar:
Untuk mendapatkan daftar semua direktori dalam array, Anda dapat menggunakan os :
sumber
Saya belum cukup puas dengan penerapan ini, saya ingin memiliki konstruktor khusus yang berfungsi
DirectoryIndex._make(next(os.walk(input_path)))
agar Anda dapat melewati jalur yang Anda inginkan dari daftar file. Suntingan selamat datang!sumber
Saya sangat suka menggunakan
scandir
arahan yang dibangun keos
perpustakaan. Berikut ini contoh kerjanya:sumber