Pratik Kodlama Hakkında

    #İSTENİLEN UZANTILI DOSYALARIN KÖK ÜZERİNDE SAYIMINI YAPAR
    def countfiles():
        directory=input("countfiles@directory$ ")
        extension=input("countfiles@extension$ ")
        print("\n\t"+str(len([(file) for (root,dirs,files) in os.walk(directory) for file in files if file.endswith(extension)])),"files found",end="\n"*2) 

Merhabalar, henüz yeni Python öğrenmeye başladım ve bir konuda tecrübeli arkadaşların desteğine ihtiyacım var. Bu kod bu işi yapacak en pratik kod mudur? Eğer değilse örneğini bana kılavuz olacak şekilde aktarır mısınız lütfen.

Yazılabilecek en az satırlı kod budur. Hatta input fonksiyonlarını da print içine alıp tek satıra indirebilirsiniz.

Bu şekilde kod yazmak gerçekten çok zevk veriyor. İlerlediğinizi hissediyorsunuz. Ancak üzerinden 6 ay geçtikten sonra bu kodu okumak o kadar zor oluyor ki. O yüzden pratik kelimesini bu kod için tercih etmem.

def count_files(directory, ext):
    res = []
    for (root,dirs,files) in os.walk(directory):
        for file in files:
            if file.endswith(ext):
                res.append(file)
    return res

Bu şekilde bir kod daha okunaklı oluyor. Elbette herhangi biri yazmış gibi göründüğü için bunu yazdığınızda aynı hazzı alamıyorsunuz.

Bu kodu filter fonksiyonunu kullanarak tekrar yazabilirsiniz. Döngülerden birinden kurtulmuş olur(?). Ancak yine bu yazdığım halini tavsiye ederim.

2 Beğeni

Evet, çok doğru aslında işin doğrusu bu. Bu şekilde yazmak acayip keyif vermeye başladı fakat dediğiniz gibi okunaksız oluşu bir dezavantaj doğuruyor.

Daha da keyif icin walk fonksiyonunu kendiniz yazmayi deneyebilirsiniz.

Cok basit bir recursion oldugu icin cogu standart kutuphanede bulunmuyor.

1 Beğeni

Dikkate alacağım teşekkür ederim :slight_smile:

‘Python developerlar en uzun list comprehension yazma yarışması yapıyorlarmış’ diye bir geyik vardı bir zamanlar. O geyik gerçek olursa yazbel olarak bence sizi gönderelim oraya :slight_smile:

1 Beğeni

Ahaha elbette, seve seve giderim :slight_smile: