Tidak mungkin sulit, tetapi saya mengalami gangguan mental.
Tidak mungkin sulit, tetapi saya mengalami gangguan mental.
Jawaban:
import os
os.listdir("path") # returns list
Satu arah:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
The glob.glob
metode di atas tidak akan daftar file yang tersembunyi.
Karena saya awalnya menjawab pertanyaan ini bertahun-tahun yang lalu, pathlib telah ditambahkan ke Python. Cara yang saya sukai untuk mendaftar direktori sekarang biasanya melibatkan iterdir
metode pada Path
objek:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
['c:\\users']
glob.glob(r'c:\users\*')
(glob tidak benar-benar mendaftar direktori, tetapi memperluas tanda bintang dan semacamnya yang menyelesaikan tugas serupa).
os.walk
dapat digunakan jika Anda membutuhkan rekursi:
import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
for filename in files:
print os.path.join(path,filename)
glob.glob
atau os.listdir
akan melakukannya.
import glob
ENTER glob.glob(r'c:\users')
ENTER sepertinya hanya kembali ['c:\\users']
. Mengapa demikian? Saya ingin menggunakan glob.glob karena seperti yang ditunjukkan oleh pengguna lain, itu seharusnya mengembalikan isi direktori sementara juga mengabaikan file tersembunyi. Ini penting.
glob
:glob.glob(r'c:\users\*')
Sejak Python 3.5, Anda dapat menggunakan os.scandir
.
Perbedaannya adalah ia mengembalikan entri file bukan nama. Pada beberapa OS seperti windows, itu berarti Anda tidak perlu os.path.isdir/file
tahu apakah itu file atau tidak, dan itu menghemat waktu CPU karena stat
sudah dilakukan saat memindai dir di Windows:
contoh untuk mendaftar direktori dan mencetak file lebih besar dari max_value
byte:
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(baca jawaban saya berdasarkan kinerja yang luas di sini )
Kode di bawah ini akan mencantumkan direktori dan file dalam direktori. Yang lainnya adalah os.walk
def print_directory_contents(sPath):
import os
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath,sChild)
if os.path.isdir(sChildPath):
print_directory_contents(sChildPath)
else:
print(sChildPath)
.XYZ
file dalam konteks sistem file Unix), bila digunakanglob.glob("/home/username/www/.*")
?