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.globyö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 iterdiryöntem artık genellikle Pathnesneler ü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.globya os.listdirda yapacak.
import globENTER 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/filebir dosya olup olmadığını bilmeniz gerekmediği anlamına gelir ve statWindows'da dir tarama yapılırken zaten CPU zamanından tasarruf sağlar :
bir dizini listeleme ve max_valuebayttan 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/.*")?