Zor olamaz, ama zihinsel bir engelim var.
Zor olamaz, ama zihinsel bir engelim var.
Yanıtlar:
Tek yön:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
Yukarıdaki glob.glob
yöntem gizli dosyaları listelemez.
Aslında bu soruyu yıllar önce yanıtladığımdan beri, Python'a pathlib eklendi. Bir dizini listelemek için tercih ettiğim iterdir
yöntem artık genellikle Path
nesneler üzerindeki yöntemi içeriyor :
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
['c:\\users']
glob.glob(r'c:\users\*')
(glob aslında dizinleri listelemez, ancak yıldızları genişletir ve benzer bir görevi yerine getiren böyle).
os.walk
özyineleme gerekiyorsa kullanılabilir:
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
ya os.listdir
da yapacak.
import glob
ENTER glob.glob(r'c:\users')
ENTER yalnızca geri dönüyor gibi görünüyor ['c:\\users']
. Neden? Ben glob.glob kullanmak istiyorum çünkü diğer kullanıcıların işaret ettiği gibi, sözde gizli dosyaları göz ardı ederken bir dizinin içeriğini döndürür. Bu önemli.
glob
:glob.glob(r'c:\users\*')
Python 3.5'ten beri kullanabilirsiniz os.scandir
.
Fark, isimleri değil dosya girişlerini döndürmesidir . Windows gibi bazı işletim sistemlerinde, bunun os.path.isdir/file
bir dosya olup olmadığını bilmeniz gerekmediği anlamına gelir ve stat
Windows'da dir tarama yapılırken zaten CPU zamanından tasarruf sağlar :
bir dizini listeleme ve max_value
bayttan daha büyük dosyaları yazdırma örneği :
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(performansa dayalı kapsamlı bir cevabımı burada okuyun )
Aşağıdaki kod, dizinleri ve dizin içindeki dosyaları listeler. Diğeri o. Yürüyüş
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
, birlikte kullanıldığında gizli dosyaları ( Unix dosya sistemi bağlamındaki dosyaları kastettiğini varsayarım) listeler miglob.glob("/home/username/www/.*")
?